gpt4 book ai didi

mongodb - Mongodb写的原子性

转载 作者:可可西里 更新时间:2023-11-01 10:31:08 25 4
gpt4 key购买 nike

Mongo 文档说单个文档写入是原子的,但在另一个地方它提到交错事务可能会在写入线程返回之前读取未提交的数据。

我了解其他事务可以读取未提交的数据,因为写入可能尚未提交到日志。

但是在writer线程还没有返回的时候线程如何读取数据呢。是否适用于写关注不是默认的情况?

谢谢安库尔

最佳答案

有了引用,我现在可以了解上下文并告诉您这是关于什么的。

Mongo documentation says single document write are atomic

是的

it mentions interleaved transactions may read uncommitted

事实上,任何读取都可能获得未提交的数据。这是因为 MongoDB 会在写入磁盘之前先写入 fsync 队列。

MongoDB 可以在进入磁盘之前从这个 fsync 队列中读取,并引用页面:

Other database systems refer to these isolation semantics as read uncommitted.

主要是 ACID 数据库。

But how can threads read data while the writer thread has not returned.

感谢 MongoDBs 并发规则:http://docs.mongodb.org/manual/faq/concurrency/#does-a-read-or-write-operation-ever-yield-the-lock

简而言之,总结一下:写入在其运行期间不会获取独占锁,相反它可以平息(由于各种规则)读取允许您在写入中途返回数据。

这也是为什么您有时必须小心多文档更新和应用程序读取数据的其他线程,它实际上可能获得一半是最新的数据而另一半不是。

关于mongodb - Mongodb写的原子性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com