MongoDB中的游标隔离 [英] Cursor isolation in mongoDB

查看:23
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆