【问题标题】:Whats the best way to create summary records from detail records with MySQL?使用 MySQL 从详细记录创建摘要记录的最佳方法是什么?
【发布时间】:2012-01-08 14:39:45
【问题描述】:

我每天可能有 10 到 2000 万条详细记录(统计和性能数据),必须读取这些记录,并汇总为 24 小时和 1 条每日摘要记录。

该过程计算几个字段的平均值,获取其他字段的最大值和最小值,在 CPU 方面没有什么意义。

是不是更好:

A) 在记录进入时将详细记录汇总到汇总记录中,稍微延迟每个详细记录的插入?我假设汇总表中会有很多锁定(选择更新等),因为有几个不同的系统导入数据。

B) 等到小时结束,然后选择整个以前的小时数据并创建摘要记录?用户查看统计数据会有延迟,但在此期间会提供详细记录。

也许有替代方法?

【问题讨论】:

    标签: mysql parallel-processing batch-processing


    【解决方案1】:

    只需将view 设为汇总表即可。您的所有插入将照常工作。只需根据您的需要制作视图作为摘要。这将使用主表自动更新。

    您还可以制作 24 小时和 1 天的摘要基础。视图是存储的查询,在调用时会产生结果集。视图充当虚拟表。

    有关视图的更多详细信息,请参阅:http://dev.mysql.com/doc/refman/5.0/en/create-view.html

    如果您需要有关mysql views.的进一步帮助,请告诉我

    【讨论】:

    • 我只是担心创建它的查询会杀死服务器,否则,我为什么不只为运行时报告创建相同的查询而不是创建视图?目前数据库中有 50 亿行。也许我错过了一些东西(视图的优势?)
    • MYSQL 是否支持物化视图?
    【解决方案2】:

    这取决于运行单个更新所需的负载,但我可能会使用单独的摘要运行。我可能会打赌说,与每次插入的累积想法相比,单次更新所需的时间更短。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2011-04-25
      • 2016-10-25
      相关资源
      最近更新 更多