7

我听说大批量并没有真正提供任何额外的性能

什么是最佳的?

4

1 回答 1

13

如果您调用 Insert 一次插入一个文档,则每个文档都有一个网络往返。如果您调用 InsertBatch 以批量插入文档,则每个批次而不是每个文档都有一个网络往返。InsertBatch 比 Insert 更有效,因为它减少了网络往返次数。

假设您必须插入 1,000,000 个文档,您可以分析不同批量大小的网络往返次数:

  • 批量大小 1:1,000,000 次往返
  • 批量大小 10:100,000 次往返
  • 批量大小 100:10,000 次往返
  • 批量大小 1000、1000 次往返
  • ETC...

因此,您会看到,即使是小至 10 的批大小也已经消除了 90% 的网络往返,而 100 的批大小已经消除了 99% 的网络往返。

这是一个稍微简化的分析,因为它忽略了随着批量大小增加,消息大小也会增加的事实,但它或多或少是准确的。

我认为没有任何一种最佳批量大小。我会说更大的批次性能更高,但是一旦每批次有 10-100 个文档,大批次的性能改进就会非常小。

于 2013-04-17T12:37:33.160 回答