Php Mysql-摘要表

Php Mysql-摘要表,php,mysql,Php,Mysql,你建议哪种方法?为什么 正在创建摘要表并 1) 在操作实时发生时更新表 2) 每15分钟运行一次分组查询以更新汇总表 3) 还有别的吗 数据必须接近实时,不能等待一小时、一天等。我认为还有第三种选择,可以让您更好地管理CPU资源。编写一个单独的流程定期更新汇总数据表怎么样?与其使用group by重新创建摘要(保证随着时间的推移会运行得更慢,因为每次都会有更多的行),不如只更新这些值。根据数据的性质,这可能是不可能的,但是如果它非常重要,以至于它不能等待并且必须接近实时,那么我认为您可以有时间调

你建议哪种方法?为什么

正在创建摘要表并

1) 在操作实时发生时更新表

2) 每15分钟运行一次分组查询以更新汇总表

3) 还有别的吗


数据必须接近实时,不能等待一小时、一天等。

我认为还有第三种选择,可以让您更好地管理CPU资源。编写一个单独的流程定期更新汇总数据表怎么样?与其使用group by重新创建摘要(保证随着时间的推移会运行得更慢,因为每次都会有更多的行),不如只更新这些值。根据数据的性质,这可能是不可能的,但是如果它非常重要,以至于它不能等待并且必须接近实时,那么我认为您可以有时间调整模式,并允许流程更新它,而不必读取源表中的每一行

例如,假设您的数据只是
login\u data
(cols用户名、login\u时间戳、logout\u时间戳)。您的摘要可以是登录摘要(cols用户名、计数)。每隔15分钟,您可以截断
login\u summary
表,然后使用select username、count(*)类型的代码插入。但是你每次都得重新扫描整个桌子。为了加快速度,您可以将汇总表更改为具有
last\u update
列。然后每隔15分钟,您只需对每个比该用户上次更新记录更新的记录进行更新。当然更复杂,但它有一些好处:1)只更新更改的行,2)只读取新行


如果15分钟对你的用户来说太长了,你可以调整它每10分钟运行一次。这当然会对CPU产生一些影响,但不如每15分钟重做一次整个摘要。

谢谢,@Nate。现在更新有点老了,所以我想OP已经解决了他的问题,继续前进。希望如此。我正试图找到同样问题的答案,所以它帮助了我。:)