mysql - 如何有效地创建汇总表

标签 mysql performance optimization database-design large-scale

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

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

最佳答案

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

每当 UPDATE/INSERT 更改基表时,汇总表就会更新。这当然会减慢这些操作,但会使汇总表完全保持最新.

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

这种方法的一个优点是无需运行 cron 作业来刷新/创建汇总表。

我知道这对您的情况可能不适用/不可行。

关于mysql - 如何有效地创建汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803618/

相关文章:

r - "vectorize"具有不同参数长度的函数的最快方法

c++ - 表现。寻找子串。 substr 与查找

php - 从 mysql 查询中打印随机行

c++ - 插入排序的快速排序代码不起作用

c# - mysql外键错误

php - 哪种连接或查询方法是可能的? MYSQL 快速问题?

mysql - 根据 MA​​X(value) 有选择地聚合字段

php - 由于重复 Ajax 调用,无法正确复制文本

performance - 衡量 React Native 应用程序的性能

scala - Scala 编译器会提升正则表达式吗