2012-02-04 51 views
0

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

我在想

  • 追加到一个文件,并解析它在后台每隔X分钟
  • 写日志记录到MySQL数据库(特表),并做了 后台处理

你会如何优化?

+0

您有一个计数器覆盖所有页面浏览量吗? – 2012-02-04 11:02:01

+0

@FrederickCheung不,不,我只是把它作为一个例子。其实我会记录一些文件的带宽(每个记录的用户)。 – xpepermint 2012-02-04 11:03:34

回答

2

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

如果你确实达到了mysql的并发限制,你是否考虑过使用不同的数据存储来获取这些信息?例如MongoDB是很好地适应这些类型的更新插入操作的,因为它具有广泛的“发射后不管”之称的modifiers

例如,你可以这样做

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

此更新操作会找到名称为x的页面计数器对象,并且递增计数为1(如果计数存在)或将计数设置为1.如果没有此类页面计数器,则会创建一个

+0

嗡嗡....“火,忘了”......听起来不错。将检查。 – xpepermint 2012-02-04 11:10:54

+0

链接到mongo文档的相关位 – 2012-02-04 11:18:05

+0

这太棒了!默认情况下,Mongo Ruby驱动程序是'火再忘了'。 – xpepermint 2012-02-04 14:04:44

相关问题