7

バッチサイズを大きくしても、実際にはパフォーマンスが向上しないと聞きました

何が最適ですか?

4

1 に答える 1

13

Insert を呼び出してドキュメントを 1 つずつ挿入すると、ドキュメントごとにネットワーク ラウンド トリップが発生します。InsertBatch を呼び出してドキュメントをバッチに挿入すると、ドキュメントごとではなく、バッチごとにネットワーク ラウンド トリップが発生します。InsertBatch は、ネットワーク ラウンド トリップの回数を減らすため、Insert よりも効率的です。

1,000,000 のドキュメントを挿入する必要があると仮定すると、さまざまなバッチ サイズのネットワーク ラウンド トリップの数を分析できます。

  • バッチサイズ 1: 1,000,000 往復
  • バッチサイズ 10: 往復 100,000 回
  • バッチサイズ 100: 往復 10,000 回
  • バッチサイズ 1000、1000 往復
  • 等...

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

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

最適なバッチ サイズは1 つではないと思います。バッチが大きいほどパフォーマンスが高いと言えますが、バッチごとに 10 ~ 100 個のドキュメントがあると、バッチが大きいほどパフォーマンスがわずかに向上します。

于 2013-04-17T12:37:33.160 に答える