I have this two mongo commands, that in my opinion should lead to the same results:

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});};

both commands perform inserts correctly, however, the second one is cca 100x times slower (500ms vs 45s). Does anybody know, why this is so? The difference is present only when {j:1} is set, so it's probably somehow related to some journaling issues?

有帮助吗?

解决方案

The second command is actually waiting for the journal commit whereas the first is not and hence the difference. When using the getLastError shell helper you cannot pass in the j option. It should be a number or string corresponding to the w parameter to the getlasterror database command as documented here.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top