Mongo数据库操作中批量插入和数组插入之间的区别是什么

时间:2015-05-20 07:12:17

标签: mongodb nosql

我想知道以下查询的性能如何变化。 我知道批量插入按顺序执行,而普通/数组插入也按顺序执行。

BULK INSERT

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { _id: 1, item: "abc123", status: "A", soldQty: 5000 } );
bulk.insert( { _id: 2, item: "abc456", status: "A", soldQty: 150 } );
bulk.insert( { _id: 3, item: "abc789", status: "P", soldQty: 0 } );
bulk.execute( { w: "majority", wtimeout: 5000 } );

普通INSERT

db.items.insert( { _id: 1, item: "abc123", status: "A", soldQty: 5000 } );
db.items.insert( { _id: 2, item: "abc456", status: "A", soldQty: 150 } );
db.items.insert( { _id: 3, item: "abc789", status: "P", soldQty: 0 } );

数组插入

var array_insert = [
{ _id: 1, item: "abc123", status: "A", soldQty: 5000 } ,
{ _id: 2, item: "abc456", status: "A", soldQty: 150 } ,
{ _id: 3, item: "abc789", status: "P", soldQty: 0 } 
] ;
db.items.insert( array_insert );

任何人都可以解释上述查询的性能或好处的不同之处是什么?

1 个答案:

答案 0 :(得分:3)

批量插入更快,因为插入是一次性发送的。将它与发送一个插入的常规流进行比较,等待服务器回复,然后再发送下一个插入。

无论模式如何(批量与常规),服务器都需要插入所有内容。在常规模式下,客户端在等待服务器响应时丢失时间。不一定是因为服务器很慢。网络也可能很慢。

无论使用何种数据库,批处理请求都是加速应用程序的常用方法。例如,请参阅pipelining in Redis

相关问题