【问题标题】:When is it useful to store aggregated data in SQL [closed]什么时候在 SQL 中存储聚合数据有用[关闭]
【发布时间】:2013-07-29 20:45:41
【问题描述】:

我正在一个项目中工作,我需要根据用户在网站上的交互来计算一些平均值。

现在,需要计算其总平均值的记录数量可以从几到几千不等。

我的问题是,在哪个阈值下将聚合数据存储在单独的表中并通过存储过程在每次生成新记录时更新该值而不是每次需要时都计算它是明智的?

提前致谢。

【问题讨论】:

  • 您有性能问题吗?在做这样的事情之前,我会先尝试优化我的查询。
  • 除非您想要个人意见,否则无法回答您的问题,没有门槛,您根据需要设计事物,并用额外的空间等来补偿时间。您的问题引发了太多其他问题这也将基于意见。
  • 这取决于很多细节,包括就您的用户而言可接受的响应时间。
  • 这在很大程度上取决于数据库的读/写分布。即使通过存储过程完成,每秒写入数千次更新多个表也不一定好。
  • 对,直到真正出现问题才修复它,有意义

标签: mysql sql


【解决方案1】:

不要这样做,直到您开始遇到因聚合数据所花费的时间而导致的性能问题。

那就去做吧。

如果在生产中发现这个瓶颈是不可接受的,则在与您的生产环境准确匹配的测试环境中运行系统,并加载与生产数据准确匹配的测试数据。如果您在该环境中遇到了由聚合时间引起的性能瓶颈,那就去做吧。

【讨论】:

  • 这听起来不错,谢谢!
【解决方案2】:

您需要权衡当前数据的需求与快速数据的需求。如果您绝对需要当前数据,那么您必须忍受更长的查询延迟。如果您绝对需要尽快获得数据,那么您将不得不处理旧数据。

您可以为查询和插入单独表的时间安排时间,并评估哪个似乎最适合您的需求。

【讨论】:

    猜你喜欢
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2013-01-28
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多