2012-03-22 6 views
3

私はmap/reduceをコレクションに書き込むので、グローバル書き込みロックを取得する必要があることは知っていますが、出力をインラインに設定してもメモリに書き込まれませんか?それはまだロックをつかんでいるようだ。これはおそらくMongo 2.0では正常ですか?Mongoブロックのインラインマップ/縮小はありますか?

答えて

4

インラインモードでは、出力は単一のドキュメントとして返され、最大ドキュメントサイズに制限されるため、返される結果が大きいため動作や応答時間が異なることがありますか?

ロックに関して、Map/Reduceジョブは、(書き込みを含む)より多くの小さな操作と考えることができます。

最初に、ある時点で1つのスレッドのみがJSコードを実行できるようにJavaScriptロックが存在するため、少なくとも今のところシングルスレッド化されています。しかし、MRのほとんどのJSステップ(例えば、単一のマップ())は非常に短く、その結果、ロックは非常に頻繁に生じる。

いくつかの非JavaScriptの操作は、MapReduceのは、それがロックを取る行っていることもあります。

  • それはコレクション(ロックを読んで、すべての100件の文書をもたらした)
  • それは一時的なコレクションに文書を挿入(書き込みから読み込み、あなたのインラインモード

(書き込みロック)これは、既存のコレクションを、最終的なコレクションを作成したり合流したり置き換え
  • )シングルライト用ロック2番目の2つをインメモリマップとして削除するので、少なくともこのジョブではなく、書き込みロックが見られないようにする必要があります。ロックは、おそらく書き込みではなく、JSの操作や読み込みの可能性がありますか?

  • +0

    ああ、参考までに、この情報のほとんどはここにあります:http://www.mongodb.org/display/DOCS/How+does+concurrency+work#Howdoesconcurrencywork –

    +0

    ありがとうございます - 私のマップにはいくつかの文字列比較がありますおそらくかなり遅いのでおそらく遅くなるでしょう。その2.2がその単一のJS制限を除去することを望む。 –

    +1

    https://jira.mongodb.org/browse/SERVER-4258はあなたが見たいものです。これはdev 2.1ブランチにありますが、spidermonkeyをv8スイッチで動作させる必要があります。 devブランチをv8でビルドして試すことができます:http://www.mongodb.org/display/DOCS/Building+with+V8 –

    関連する問題