Docs 菜单

Docs 主页开发应用程序MongoDB Manual

默认 MongoDB 读关注/写关注

在此页面上

  • 读关注 (read concern)
  • 写关注
  • 因果一致性保证
读/写关注继承
点击放大

默认读关注如下所示:

操作
默认读关注
读取主节点

"local"

注意

  • 此读关注可返回可能已回滚的数据。

  • 这种读关注并不能保证因果一致性

读取从节点。

"local"

注意

  • 此读关注可返回可能已回滚的数据。

  • 这种读关注并不能保证因果一致性

有关可用都关注的更多信息,请参阅读关注

读/写关注继承

从 MongoDB 5.0 开始,隐式默认写关注w: majority。但是,对于包含仲裁节点的部署,需要特别考虑以下事项:

  • 副本集的投票多数是 1 加投票成员数量的一半,四舍五入。如果数据承载投票成员的数量不超过投票多数,则默认写关注为 { w: 1 }

  • 在所有其他场景中,默认写关注为 { w: "majority" }

具体来说,MongoDB 使用以下公式来确定默认写关注:

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

例如,考虑以下部署以及各自的默认写关注:

非仲裁节点
仲裁节点
投票节点
多数投票节点
隐式默认写关注
2
1
3
2
{ w: 1 }
4
1
5
3
{ w: "majority" }
  • 在第一个示例中:

    • 有 2 个非仲裁节点和 1 个仲裁节点,共有 3 个投票节点。

    • 多数投票节点(1 加 3 的一半,四舍五入)为 2。

    • 非仲裁节点的数量 (2) 等于多数投票节点 (2),导致隐式写关注为 { w: 1 }

  • 在第二个示例中:

    • 共有 5 个投票节点,其中有 4 个非仲裁节点和 1 个仲裁节点。

    • 多数投票节点(1 加 5 的一半,四舍五入)为 3。

    • 非仲裁节点的数量 (4) 大于多数投票节点 (3),导致隐式写关注为 { w: "majority" }

有关可用写关注的更多信息,请参阅写关注。

使用因果一致的客户端会话时,只有在以下情况下,客户端会话才能保证因果一致性:

  • 关联的读取操作使用 "majority" 读关注,而

  • 关联的写入操作使用 "majority" 写关注。

← 默认 MongoDB 端口