1

ドキュメントの更新に関して MongoDB はどれほど賢いのでしょうか?実際に何も変更しない場合、ドキュメントをわざわざ「更新」しないことを知っていますか?

次の 2 つの更新クエリを比較します。

db.test.update({}, {'$set': {'something': true}})
db.test.update({'something': {'$ne': true}}, {'$set': {'something': true}})

目的は、コレクションsomething内のすべてのドキュメントのプロパティをに設定することです。testtrue

一部のドキュメントのsomethingプロパティが既に に設定されているとしtrueます。

インデックスは考慮しないでください。それは重要ではないと思います。

4

1 に答える 1

3

MongoDB はとにかくすべてのドキュメントを処理する必要があるため (インデックスを使用していないため)、大きな違いはないと思います。

また、更新は 3 ステップの操作です。

  1. ドキュメントを含むページをディスクから RAM に取得します (まだそこにない場合)
  2. インメモリを更新する
  3. ダーティ ページをディスクにフラッシュする

とにかく最初の部分が起こります。ここで、2 番目のステップでチェックを行うと、CPU が少し消費されますが、潜在的にダーティ ページの数が減少することで対抗されます。私の直感では、最初の行はすべてのドキュメントのチェックと更新を行っていません。

コアな 10 世代の人たちがこのトピックに現れて、何が起こっているのかを正確に教えてくれることを願っています.

于 2012-09-24T03:26:12.530 に答える