mongodb - Mongo 数据库操作中的批量插入和数组插入有什么区别

标签 mongodb nosql

我想知道以下查询在性能上有何不同。 我知道批量插入是按顺序执行的,普通/数组插入也是按顺序执行的。

批量插入

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 } );

普通插入

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 );

任何人都可以解释上述查询在性能或优势方面的差异吗?

最佳答案

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

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

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

关于mongodb - Mongo 数据库操作中的批量插入和数组插入有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30342727/

相关文章:

java - 从 Java 复制 HBase 中的表

node.js - Mongodb 聚合 $push 与 $cond 和 $each

spring-boot - 中型数据项目需要选择哪个分布式数据库

mongodb - 有什么方法可以强制遵守模式吗?

mongodb - 使用 S3 作为数据库与数据库(例如 MongoDB)

mongodb - 有没有多核利用NoSQL的系统?

javascript - 根据MongoDB中另一个集合中的数据查询一个集合中的数据

mongodb - Mongo 副本 "NotPrimaryNoSecondaryOk"

mongodb - org.bson.json.JsonParseException : JSON reader was expecting a value but found ':' - Mongo query in springboot throwing this error

java - 如何使用 MongoTemplate 将 Mongo Shell 脚本转换为 Java?