MongoDB中的游标隔离 [英] Cursor isolation in mongoDB
本文介绍了MongoDB中的游标隔离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
首先,请原谅我问了一个愚蠢的问题,但是我是MongoDB的新手,并且还在学习游标。我有一个问题,为什么我们需要游标隔离?手册上写道:"如果文档发生更改,对文档的干预写操作可能会导致游标多次返回该文档。"我不能理解这一点。如果有人能对此多加说明或举些例子,我会很高兴的。
推荐答案
可以,基本上可以,MongoDB直接从数据文件中分批读取100个(可以用batch_size
修改为最大16MB,基本上返回的是单个BSON文档)。
这与写出静电结果集的sql形成对比。因此,您马上就会明白,如果游标有交错操作,如果它们在排序中发生更改,则它们可以返回文档,即,如果您有这样的查询:
db.c.find().sort({s:1});
其中s
是一个整数,因此您可以修改发现s
最高的第一个文档,以便它显示在背面,您实际上可以(按最后一批)再次获取该文档。
这当然是一个大问题。在某些情况下,您可能会绕着圈子转,永远也不会完成一个查询。
通常在ACID中使用I
是不可能的,但是您必须理解MongoDB不喜欢ACID并且不遵循它(http://docs.mongodb.org/manual/faq/concurrency/),并且使用特定的并发规则,这些规则实际上打破了游标隔离,使得更新文档的s
的写入操作在您耗尽游标之前发生,即使它发生在另一个线程中。
希望这已经为您澄清了问题。
这篇关于MongoDB中的游标隔离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文