为大更新排队更新请求


Queuing update requests for a giant update?

我有一个站点,当用户执行一个操作时,我希望将其添加到该用户曾经执行过的操作的计数中。当然,我会说"每次更新用户表",但我不觉得这是一个很好的解决方案,我想看看是否有办法做到这一点。

基本上用户将登录并开始使用操作,每次他们做出一个操作时,我将执行[whatever],然后在一天结束时,我将执行所有[whatever]并进行查询,节省每个操作的资源。如果这个网站的用户增加到1000人,这些小查询就会开始累积起来!只有一种类型的"动作",为了这个问题的缘故,只要假设每个页面加载都是一个动作。

如果是单个会话,则存储(队列)会话/全局变量中的"所有更新"。在会话结束时更新。

如果是一个多会话系统,我建议执行上述操作并在每个会话结束时更新表。

:(几百kbps以上,这不是一个好主意):

你可能想要做一个短码编码/解码库来存储到会话变量中。如果我们谈论的是大数据。例如,如果您有一个拖放系统,中间状态可以是键<>值对结构。eg: LOC_A=WIDGET_1;LOC_B = WIDGET_88 . .诸如此类……

这有意义吗?

不要忽略操作事件表。除非你的用户行动率非常高,否则查询和计算行动事件可能比累积总数更合理。通过合理的设计,索引可以提供对数百或数千个事件的单块读访问。开发人员经常会被这样的表大小吓到,而这些表的大小实际上是相当合理的。对于MYSQL来说,几个GB的表大小不是问题,只要表是只写的。

像往常一样,测试几个选项是最好的主意,并期待惊喜。