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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With