Rails:更新每个请求的用户字段(如何优化)

时间:2012-02-04 10:51:10

标签: ruby-on-rails caching optimization logging

我必须在每个HTTP请求(页面访问次数)上更新MySQL数据库中的字段。有时我也必须为静态文件执行此操作。在重负载环境中,这可能会阻止响应,因为MySQL数据库可以一次执行单个更新(每个记录)进程。

我在考虑

  • 附加到文件并每隔X分钟在后台解析
  • 将日志记录写入MySQL数据库(特殊表)并执行 后台处理

你会如何优化它?

1 个答案:

答案 0 :(得分:2)

我不相信你所说的关于MySQL的内容 - 可以同时发生多个更新。

如果达到mysql的并发限制,您是否考虑过使用不同的数据存储来获取此信息?例如,mongodb非常适合这些类型的upsert操作,因为它具有广泛的“即发即弃”更新操作,称为modifiers

例如,您可以执行类似

的操作
db.pagecounters.update({name: 'x'}, {$inc: {count: 1}}, true)

这将找到名称为x的pagecounter对象,并且递增计数为1(如果存在计数)或将count设置为1.如果没有这样的页面计数器,则会创建一个