2016-08-29 6 views
0

私はマップを一時的なコレクションに減らす2つのコレクションを持っています。それらをコレクションAとコレクションBとコレクション_queueと呼ぼう。 私はmap reduceを実行している間、ユーザーはコレクションAを読み書きしようとしています。私はあらゆる種類のロックを取得しており、書き込みと読み取りをキューに入れています。 汚れた読み取りや書き込みがある場合は気にしません。コレクションBを読み書きして非原子化する方法ですか? ありがとうございます。Mongoでのデータベースロックの解決

+0

は3.2アドレスこれらのロックをモンゴする更新します。 –

答えて

0

MongoDBには、ロックポリシーに関してクエリに何も指定する方法はありません。

まず、あなたは(あなたがこのためにMongoDBの内部プロファイラを使用することができます。https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#database-profiling)ロックを取得するための時間が本当に問題であるかどうかを確認する必要がありますが、MongoDBの最新バージョンではない場合(、そして、

またはストレージエンジンを変更せずに最新版にアップグレードする場合)、コレクションごとのロックから移動するWiredTiggerに切り替えることができます(3.xシリーズの場合、MongoDB以前のデータベースはデータベースごとにロックされます)。 。だからあなたがWiredTigerを使っていて、ロックの競合によるかなりの遅延を経験しているなら、私はあなたがそれについて何かできるとは思わない。

はここWiredTigerのマニュアルを参照してください:https://docs.mongodb.com/manual/core/wiredtiger/

+0

ありがとう、私は3.0 +にMongoをアップグレードしてみている。 –

+0

Mongo 3.2にアップグレードし、WiredTigerエンジンを使用すると、ロックの問題が解決されます。 – loicmathieu