我认为fastmod指定了一些像原地更新的操作。在我的应用中,我使用'$'修饰符通过_id进行更新,例如:
$colleciton->update(
array('_id' => $id),
array(
'$inc' => array('hits' => new MongoInt32(1)),
'$set' => array(
'times.gen' => gettimeofday(true),
'http.code' => new MongoInt32(200)
)
),
array('safe'=>false,'multiple'=>false,'upsert'=>false)
);
我收到了这样的日志:
Wed Jul 25 11:08:36 [conn7002912] update mob.stat_pages query: { _id: BinData } update: { $inc: { hits: 1 }, $set: { times.gen: 1343203715.684896, http.code: 200 } } nscanned:1 nupdated:1 keyUpdates:0 locks(micros) w:342973 342ms
在日志中,你可以看到我没有任何“fastmod”标志。没有“移动”标志,因为我在插入时设置了字段'times.gen'和'http.code',所以填充因子为1.0。
我是否做错了什么,或者我误解了fastmod的意思?
%locked
通常意味着您的工作集大于 RAM,mongodb 必须不断地从磁盘读取/写入内存页面。即使进行原地更新,如果内存页面在磁盘上,也会遇到问题。 - Sergio Tulentsev