我有两个mongo命令,在我看来应该导致相同的结果:
for(var i=0;i<1000;i++){db.test.insert({a:1}); db.getLastError({j:1, w:1});};
for(var i=0;i<1000;i++){db.test.insert({a:1}); db.runCommand({getLastError:1, j:1, w:1});};
两个命令都正确执行插入,但是,第二个命令的 cca 慢 100 倍(500 毫秒与 45 秒)。有谁知道,为什么会这样?仅当设置{j:1}时,差异才存在,因此它可能与某些日记问题有关?
第二个命令实际上是在等待日志提交,而第一个命令不是,因此存在差异。使用 getLastError shell 助手时,不能传入 j 选项。它应该是与 getlasterror 数据库命令的 w 参数对应的数字或字符串,如此处所述。