2013-04-17 1 views
6

大きなバッチサイズで実際に追加のパフォーマンスが得られないと聞きましたmongodb C#ドライバのInsertBatchメソッドで最適なバルクアイテム数はどのくらいですか?

どのようなものが最適ですか?

+0

あなたはそれを聞いたことがありますか?うーん、私は通常、16メガ・スペース(最大)に収まる何かを言うでしょうか? – Sammaye

+0

jiraで問題が発生しました。コメントに記載されています。https://jira.mongodb.org/browse/CSHARP-725 – Serdar

+0

私は、あなたが16メガロバートが言っているのは、大量のバッチを助けるということは、データがどれほどきれいであるかによって決まります。エラーのためにクライアントに常に戻っている場合は、小さなバッチを実行する方がパフォーマンスが向上します。ここで最適な量については:うーん、多分バッチで100? – Sammaye

答えて

7

ドキュメントを挿入するために一度に1つずつ挿入を呼び出すと、ドキュメントごとにネットワーク往復があります。文書をバッチで挿入するためにInsertBatchを呼び出すと、各文書ではなく、各バッチごとにネットワークラウンドトリップが行われます。 InsertBatchはInsertよりも効率的です。これはネットワークラウンドトリップの回数を減らすためです。

  • バッチサイズ1:1,000,000往復
  • バッチサイズ10 10万往復
  • することで、異なるバッチサイズのためのネットワーク・ラウンドトリップの数を分析することができ、あなたは1,000,000の文書を挿入しなければならなかったと仮定します

  • バッチサイズ:100万回の往復
  • バッチサイズ1000年、1000件のラウンドトリップ
  • 等...

したがって、バッチサイズが10であっても、ネットワークラウンドトリップの90%がすでに排除されており、バッチサイズ100によってネットワークラウンドトリップの99%が排除されていることがわかります。

これは、バッチサイズが大きくなるにつれてメッセージサイズは大きくなるが、正確さは多少なりとも厳密ではないという事実を無視しているため、幾分単純化された分析です。

のいずれかがありません。最適なバッチサイズです。大きなバッチはパフォーマンスが良いと言えますが、バッチあたり10〜100のドキュメントがあれば、バッチのサイズが大きくなるとパフォーマンスは大幅に改善されます。

関連する問題