在mongodb c#驱动程序中使用InsertBatch方法计算的最佳批量项目是多少?

时间:2013-04-17 06:38:21

标签: mongodb bulkinsert mongodb-.net-driver

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

什么是最佳?

1 个答案:

答案 0 :(得分:10)

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

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

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

因此,您可以看到即使是小到10的批量已经消除了90%的网络往返行程,批量大小为100已经消除了99%的网络往返次数。

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

我认为没有任何一个最佳批量大小。我想说更大批量的产品性能更高,但是一旦每批产品有10-100个文件,批量产品的性能会有很小的提升。