如何有效地创建汇总表

时间:2014-07-17 12:29:22

标签: mysql performance optimization database-design large-scale

在一个月内,一个进程在一些数据库表中插入大量行〜1M 这种情况每天都会发生,整个过程持续约40分钟。没关系。
我创建了一些"汇总表"从这些插入,以便快速查询数据。这很好。

问题:我一直在汇总表中插入数据,因此创建缓存表的时间与插入实际数据的过程相匹配,这很好。但是如果前几天插入的数据发生了变化(由于任何更新),那么我需要重新计算"前几天并且为了解决这个问题而不是每天创建今天​​的摘要数据,我需要更改我的流程以从每个月的月初重新创建摘要数据,这意味着我的运行时间会大幅增加。
有没有一种标准的方法来处理这个问题?

1 个答案:

答案 0 :(得分:0)

我们的系统遇到了类似的问题,我们通过生成一个包含每一天摘要的汇总表来解决这个问题。

每当UPDATE / INSERT更改基表时,摘要表都会更新。这当然会减慢这些操作的速度,但会使汇总表保持最新状态。

这可以使用TRIGGER来完成,但由于操作位于一个位置,我们只需在TRANSACTION中手动执行。

此方法的一个优点是无需运行cron作业来刷新/创建摘要表。

我知道这可能不适用于您的情况。