Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 长光标操作期间的写入操作_Mongodb - Fatal编程技术网

Mongodb 长光标操作期间的写入操作

Mongodb 长光标操作期间的写入操作,mongodb,Mongodb,我使用MongoDB 2.4和一个DB 我在一个集合(50.000+)中找到所有项目,并将每个项目插入到另一个集合中 it = coll1.find() while (it.hasNext()) { coll2.save(it.next()) } 在同一数据库上打开cusor时进行密集写入是否会造成性能问题?否,因为游标不是原子的。每次读取都是它自己的原子事务。这意味着mongo不会遇到确保光标在时间上表示单个快照的问题。这本质上归结为一个问题,即并发性()在创建写密集型负载的同时,能够在

我使用MongoDB 2.4和一个DB

我在一个集合(50.000+)中找到所有项目,并将每个项目插入到另一个集合中

it = coll1.find()
while (it.hasNext()) {
  coll2.save(it.next())
}

在同一数据库上打开cusor时进行密集写入是否会造成性能问题?

否,因为游标不是原子的。每次读取都是它自己的原子事务。这意味着mongo不会遇到确保光标在时间上表示单个快照的问题。

这本质上归结为一个问题,即并发性()在创建写密集型负载的同时,能够在单个数据库级写入程序贪婪锁上执行读操作

MongoDB应该能够在这里很好地处理读锁和写锁,在它认为适合保持性能的特定条件下交织操作并产生当前操作(参见上面提供的链接)

当然,这与SQL不同,SQL中的读写操作是隔离的,因此这意味着MongoDB并发规则实际上破坏了ACID中的I。当然,在SQL中,锁的粒度要大得多,因此通常可以获得相对性能


如果您确实看到性能受到影响,主要是由于IO(阅读需要IO,请记住),那么您可能会发现谨慎的做法是将写操作分为1000组,每批处理后大约需要5秒钟的休息时间,让IO消失。

最后一行是问题吗?是的,问题已更新!顺便问一下,你使用的是什么样的数据库引擎?@rpax MongoDB中有不止一个数据库引擎?@Sammaye我想这个问题是在我发表评论后编辑的。或者我是瞎子