【问题标题】:Do I have to store or calculate statistics whenever I need them?我是否必须在需要时存储或计算统计数据?
【发布时间】:2020-08-09 08:26:40
【问题描述】:

我正在创建一个应用程序,我需要从我的 SQL 数据库中的数据中获取统计信息。

例如,我有一个表“animals”,其中有一列“type”可以等于“dog”或“cat”。我需要计算“动物数量”类型的统计数据,因此它等于我的表“动物”或“猫的百分比”中的实体数量,因此等于猫的数量/数量动物* 100。

这个例子被最大限度地简化了,但在我的应用程序中,它的计算会更复杂,数量也会更多。

对于我的统计信息,我是否必须创建另一个“统计信息”表,并在每次修改“动物”表时更新它,还是每次我的 API 有请求时计算这些统计信息?最佳做法是什么?

【问题讨论】:

    标签: sql database design-patterns statistics


    【解决方案1】:

    最佳做法是在需要时进行计算。这样,您就可以确保结果始终与数据保持一致。

    有时,您的数据会变得很大。你的系统真的很忙。您对快速响应时间的需求至关重要。在这些情况下,您会考虑如何使代码更高效。那是您开始考虑单独的统计表的时候。

    如果您确实有这样的表格,您将不会在表格中保留比率——至少不会单独保留。相反,您将有“狗”和“猫”的计数器。然后,您将使用inserts、updates 和deletes 的触发器来使这些值保持最新。当然,触发器会增加开销。

    您可能还会遇到只需要定期(例如每天一次)统计信息的情况。在这种情况下,您可以运行批处理作业来创建统计表——在数据库的更多静止期间运行批处理。数据已经过时,但这比实时维护statistics 表更能满足性能预期。

    【讨论】:

    • 好的,谢谢!我会看看那些触发器,但我暂时需要它们时计算一下:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多