我有一个网站,当用户执行操作时,我希望将其添加到该人曾做过多少次操作的计数中。当然我会说“每次更新用户表!”但我觉得这不是一个好的解决方案,我很想知道是否有办法做到这一点。
基本上用户会登录并开始使用操作,每次他们做出动作我会做[无论如何],然后在一天结束时,我会采取所有[无论]并进行查询,节省资源在每个行动。如果该网站增长到1,000个用户,那些小问题就会开始加起来!只有一种类型的“动作”,为了这个问题,假设每个页面加载都是一个动作。
答案 0 :(得分:1)
如果是单个会话,则在会话/全局变量中存储(队列)“所有更新”。在会话结束时更新。
如果它是一个多会话系统,我建议做以上操作并在每个会话结束时更新表。
:(高达几百kbs,这不是一个好主意):
您可能希望制作一个短代码endcoing /解码库,以将其存储到会话变量中。如果我们谈论的是巨大的数据。例如,如果您有拖放系统,则中间状态可以是关键的<> val对结构。 例如:LOC_A = WIDGET_1; LOC_B = WIDGET_88 ..等等......
这有道理吗?
答案 1 :(得分:0)
不要打折保留动作事件表。除非您具有非常高的用户操作率,否则查询和计算操作事件可能很容易,而不是在某处累积总计。索引可以通过合理的设计提供对数百或数千个事件的单块读取访问。对于像这样的东西,开发人员经常会被桌子大小吓倒,这实际上是非常合理的。只要表是只写的,IME的表大小为几GB对MYSQL来说不是问题。
像往常一样,测试几个选项是最好的主意,并且期望会感到惊讶。