1

私はしばらくの間Mongoのmap/reduceを使用してきましたが、2.0のJSエンジンがロックを解除してから(またはそう信じています)、これにより他の操作がブロックされます。2.2で新しい集約フレームワークを試しているところですが、読み取り中なのでロックする必要はないことを期待していましたが、db.currentOps()によるとロックされています。

したがって、新しい集約フレームワーク(および実際にはMongoDB操作)に関連して、MongoDBが優先度の低い操作(バックグラウンド更新など)をインテリジェントに生成できるように、特定の操作の優先度を示すことができるかどうかを知りたいと思います。時間に敏感な優先度の高い操作?

4

1 に答える 1

1

このドキュメントでは、Map Reduce が「実質的な同時操作を許可しますが、他の JavaScript 実行には排他的です」と書かれていることがわかります。

したがって、これは、データベースに対する操作が既に生成されていることを意味します。さらに、ほとんどの場合、これは単一スレッドの JavaScript 操作である map/reduce に限定されます。

ただし、ロックが存在しないことを確認したい場合は、Map Reduce の出力を別のデータベースに書き込んでから、コレクションを元のデータベースに移動できます。

>use admin
>db.runCommand( {renameCollection: "mapreducedb.mycol", to: "appdb.mycol"} )

集約フレームワークも同様

編集:別のデータベースに書き込むための {{$out}} 演算子がないため、集計フレームワーク (2.2 以降) には使用できません。ただし、これらの操作の生成は引き続き発生するため、集計操作は本番/メイン データベースで安全に実行できます。

于 2012-09-20T14:00:56.623 に答える