“fastmod”在mongodb日志中意味着什么

时间:2012-07-25 08:39:48

标签: mongodb

我认为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的含义?

1 个答案:

答案 0 :(得分:3)

您是正确的,日志中的“fastmod”表示就地更新。遗漏记录的fastmod /就地操作的一些可能原因:

  1. 您实际上是在设置或增加一个不存在的字段,因此必须添加,而不是就地操作
  2. 日志只显示慢查询(默认大于100毫秒),因此就地文件可能发生得太快而无法记录
  3. 您似乎在使用2.1或2.2来判断日志 - 如果/当您切换到新版本时消息是否消失?
  4. 进一步研究:

    查看the profiler,尝试不同的设置,注意:分析会增加负载 - 所以请小心使用。

    您也可以尝试在启动时将slowms值设置为较低值:

    > db.setProfilingLevel(0,20) // slow threshold=20ms