读关注 "local"
最后更新于
最后更新于
具有读取关注点的查询local
从实例返回数据,但不保证数据已写入大多数复制集成员(即:可能会回滚)。
读取关注local
是默认值:
读取针对主要的操作
如果读取与因果关系一致关联,则读取针对辅助节点的操作。
不管级别如何,节点上的最新数据都可能无法反映系统中数据的最新版本。
读关注local
可用于有或没有因果关系一致的会话和事务。
您可以在事务级别上而不是在单个操作级别上设置读取关注。要设置事务的已读关注点,请参见。
从MongoDB 4.4开始, “4.4”或更高版本,您可以在事务中创建集合和索引。如果显式地创建集合或索引,则事务必须使用read concern“["local"
](
考虑写入操作 Write0 到三个成员副本集的以下时间轴:
注意
Write0 之前的所有写操作都已成功复制到所有成员。
Writeprev 是 Write0之前的写入。
在 Write0之后没有发生其他写操作。
t0
主要适用于Write0
主要:Write0 次要1:Writeprev 次要2:Writeprev
主要:Writeprev 次要1:Writeprev 次要2:Writeprev
t1
Secondary1适用于Write0
主要:Write0 次要1:Write0 次要2:Writeprev
主要:Writeprev 次要1:Writeprev 次要2:Writeprev
t2
Secondary2适用于Write0
主要:Write0 次要1:Write0 次要2:Write0
主要:Writeprev 次要1:Writeprev 次要2:Writeprev
t3
Primary知道到Secondary1的复制成功,并向客户端发送确认
主要:Write0 次要1:Write0 次要2:Write0
主要:Write0 次要1:Writeprev 次要2:Writeprev
t4
Primary 知道成功复制到 Secondary2
主要:Write0 次要1:Write0 次要2:Write0
主要:Write0 次要1:Writeprev 次要2:Writeprev
t5
Secondary1接收通知(通过常规复制机制)以更新其最近 w:“多数”写入的快照
主要:Write0 次要1:Write0 次要2:Write0
主要:Write0 次要1:Write0 次要2:Writeprev
t6
Secondary2接收通知(通过常规复制机制)以更新其最近 w:“多数”写入的快照
主要:Write0 次要1:Write0 次要2:Write0
主要:Write0 次要1:Write0 次要2:Write0
阅读目标
Time T
数据状态
Primary
在t0之后
数据反映了 Write0
Secondary1
在t1之前
数据反映了 Writeprev
Secondary1
在t1之后
数据反映了 Write0
Secondary2
在t2之前
数据反映了 Writeprev
Secondary2
在t2之后
数据反映了 Write0
译者:杨帅
校对:杨帅
然后,下表总结了具有读关注的读操作在T时刻看到的数据状态。