在一个月内,一个进程在某些数据库表中插入大量行 ~1M。
这种情况每天都会发生,整个过程持续约 40 分钟。没关系。
我从这些插入中创建了一些“汇总表”,以便快速查询数据。这很好用。
问题:我一直在汇总表中插入数据,因此创建缓存表的时间与插入实际数据的过程相匹配,这很好。但是如果前几天插入的数据发生了变化(由于任何更新)那么我需要“重新计算”前几天并解决这个问题而不是每天创建今天的摘要数据我需要改变我的过程来重新创建摘要每个月初的数据,这意味着我的运行时间会大幅增加。
有没有标准的方法来处理这个问题?
最佳答案
我们的系统中有一个类似的问题,我们通过生成一个包含每天摘要的摘要表来解决这个问题。
每当 UPDATE
/INSERT
更改基表时,汇总表就会更新。这当然会减慢这些操作,但会使汇总表完全保持最新.
这可以使用 TRIGGER
来完成,但由于操作在一个地方,我们只需在 TRANSACTION
中手动完成。
这种方法的一个优点是无需运行 cron 作业来刷新/创建汇总表。
我知道这对您的情况可能不适用/不可行。
关于mysql - 如何有效地创建汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803618/