图解 MongoDB 22|读写关注:持久性与一致性的档位选择

作者:十三Tech日期:2026/7/1

前面几篇多次提到 w: "majority",这篇把它彻底讲清楚。读写关注(read/write concern)是 MongoDB 控制持久性和一致性的核心参数——它们决定了「一个写入要被几个节点确认才算成功」「一个读取从哪个节点读、读到什么程度的一致」。理解了它们,才能在不同业务场景下精准调出「够用且不浪费」的持久性/一致性档位。

先把机制边界说清楚

读写关注是三个相关但独立的参数:

  • writeConcern(写关注):写操作要被几个节点确认才算成功。控制持久性。
  • readPreference(读偏好):读操作发到哪个节点(主还是从)。控制读的分摊和落点。
  • readConcern(读关注):读到什么程度一致的数据。控制读的一致性。

三者可以独立组合。比如「写要 majority + 读从节点分担 + 读到已提交数据」就是一种组合。

writeConcern:写关注档位

writeConcern 的核心是 w 参数,控制写入要几个节点确认。先澄清一个版本事实:5.0 之前复制集默认 writeConcern 是 w: 1,从 5.0 起默认已改为 w: "majority"——今天在 5.0+ 部署上不显式指定,拿到的就是 majority。下面的档位按这个前提理解:

w: 0:不等任何确认,发出就算成功。最快,但可能丢(发出去主就崩了,没记下来)。只适合可丢失的数据:日志、埋点、缓存预热。

w: 1:等主节点确认(写到了主的内存/journal)。单机不丢(主崩了 journal 能恢复),但复制集下,如果主确认后还没同步到从就崩溃切换,这条写入可能回滚。所以 w: 1 是「单机持久,failover 可能回滚」。在 5.0+ 上它是你主动为了换吞吐而降级到的档位,而不是默认。

w: "majority":等多数节点确认写入。这是复制集下最强的不丢保证——多数节点都有这条数据,任何少数派故障都不会丢。代价是延迟:要等多数节点同步确认,通常是 w: 1 的两倍以上。这也是 5.0+ 的默认档位。

j: true:强制等 journal 刷盘(而不是只到内存)。配合 w 使用,如 w: 1, j: true 保证单机 journal 已落盘,w: "majority", j: true 是最强档位。journal 刷盘默认每 100ms,j: true 强制立即刷,增加延迟。

档位选择的核心判断是「这条写入能不能容忍丢失」:不能丢(订单、支付)→ w: "majority";单机不丢即可(大多数业务)→ w: 1;可丢(日志)→ w: 0

readPreference:读偏好

readPreference 决定读发到哪个节点:

primary(默认):只读主,强一致(读到主最新写入)。适合一致性敏感的读。

primaryPreferred:优先主,主不可用才读从。兼顾一致性和可用性。

secondary:只读从节点,分担主压力。代价是最终一致(从有延迟,读到旧数据)。

secondaryPreferred:优先读从,从都没有才读主。读密集、对一致性不敏感的场景用。

nearest:读网络延迟最低的节点,不分主从。跨地域部署时用,降低读延迟。

读从节点要配合 maxStalenessSeconds——限制可接受的从节点延迟上限。比如设 90 秒,从节点延迟超过 90 秒就不读它(转读主),避免读到太旧的数据。

readConcern:读关注

readConcern 决定读到什么程度一致的数据:

local(默认):读本节点最新数据。可能读到尚未提交到多数派的数据(主切换时会回滚),所以可能「读到了后来消失的数据」。

majority:只读已提交到多数派的数据。配合 w: "majority" 写,保证读到的数据不会因 failover 回滚消失。核心交易场景建议 majority 读写配对。

linearizable:强一致线性化读,最强但最慢。保证读到所有已确认的写入,且读操作线性一致。代价是延迟高,只在必要时用。

snapshot:快照读,看到某个时间点的一致快照(可用于事务,也可用于单文档读配 atClusterTime 钉住快照)。

怎么组合

实际业务的组合通常是几种模式:

核心交易(订单、支付)w: "majority" 写 + readConcern: "majority" + 读主。最强不丢、最强一致,接受延迟。这是金融级的配置。

一般业务w: 1 写 + 读主。单机不丢、强一致读,延迟低。绝大多数业务够用。注意 5.0+ 默认已是 majority,显式指定 w: 1 是为了把延迟换吞吐,要清楚这是主动降级。

读密集、可容忍最终一致w: 1 写 + readPreference: secondary 读从 + maxStalenessSeconds。分摊主压力,接受从的延迟。

可丢数据(日志、埋点)w: 0 写。换最大吞吐。

跨地域读readPreference: nearest,就近读降低延迟,接受跨地域复制延迟。

判断框架

  • writeConcern 按「能不能丢」选档:不能丢 w:majority,单机不丢 w:1,可丢 w:0
  • 5.0+ 默认 writeConcern 已是 w: "majority",4.x 及以前默认才是 w: 1;排查延迟先确认默认值。
  • j: true 是单机 journal 持久性强保证,绝对不能丢加它。
  • readPreference 按一致性需求选:强一致读主,分摊读从 + maxStalenessSeconds。
  • readConcern 按「读到回滚数据能不能接受」选:不能接受用 majority。
  • 核心交易:majority 写 + majority 读 + 读主,最强档。
  • 读从 = 最终一致,永远记住这点,别用从节点读做强一致判断。

事实边界:读写关注

客观事实先说清:writeConcern 决定写入确认边界,readConcern/readPreference 决定读取一致性与来源。 MongoDB 的优势往往来自“模型、索引、复制/分片和存储引擎”一起配合,而不是某一个配置项单独生效。

工程边界是:把读从库当免费扩展,会引入读旧数据和单调读问题。 所以,MongoDB 文章不能只停留在“机制是什么”,还要回答访问模式、数据分布、增长趋势和线上证据是否匹配。

三轮追问

第一轮追问:这个机制真正解决的是什么问题?

writeConcern 决定写入确认边界,readConcern/readPreference 决定读取一致性与来源。

第二轮追问:最容易误用在哪里?

把读从库当免费扩展,会引入读旧数据和单调读问题。

第三轮追问:线上怎么验证这个判断?

按业务选择 majority、linearizable、local 等档位,并压测延迟成本。

下一篇讲两地三中心,把高可用部署架构讲透。


关于十三Tech

All in AI Agent 方向的架构师,专注 AI 工程实践。

相信 AI 是程序员的最佳搭档,帮助每一位开发者驾驭 AI。

公众号搜索「十三Tech」

本文首发:rubyfun.cn/posts/%E5%9…


图解 MongoDB 22|读写关注:持久性与一致性的档位选择》 是转载文章,点击查看原文


相关推荐


图解 MongoDB 05|文档模型设计:内嵌 vs 引用,反范式不是免费午餐
十三Tech2026/6/22

刚从 MySQL 迁到 MongoDB 的人,最容易把关系建模那一套照搬过来:每个实体建一个集合,用 userId、orderId 这种字段做关联,查询时再 $lookup 拼。这种写法能跑,但它把 MongoDB 用成了「没有外键约束的关系库」,丢掉了文档模型最大的优势——访问局部性。 文档模型真正的价值,不是「字段随便加」,而是把一个业务实体的相关信息内嵌成一个文档,应用读一次就能拿到全部信息。但内嵌也不是免费午餐:它换来访问效率的同时,要承担冗余、一致性维护和文档膨胀的成本。这一篇讲清楚内


从 WWDC 26 空间重构(Spatial Reframing)再看端侧 2D 转 3D 的技术演进
Layer2026/6/14

2026 年 6 月 8 日,WWDC26 上苹果发布了空间重构(Spatial Reframing):照片拍完之后,拖动画面重新选择机位,AI 实时补全新视角缺失的内容: 头部玩家在两年内相继入场,这背后是三项能力趋于成熟: 单目深度估计沉淀为基础模型:无需双摄或激光雷达,仅凭一张普通照片推断每个像素的远近;过去这类模型更像“专用工具”,换个场景就容易失准;2024 年前后,香港大学与字节跳动的 Depth Anything V2 的 25M 参数的 Small


Python 迭代器与生成器
copyer_xyf2026/6/7

本文面向已有前端开发基础、正在学习 Python 的开发者。 迭代器和生成器解决的是同一个问题:数据不一定要一次性全部准备好,可以在需要的时候一个一个取出来。前端里最接近的经验是 for...of、Symbol.iterator、生成器函数 function* 和 yield。 这几个概念可以先合在一起记: 可迭代对象表示“可以被遍历的数据源” 迭代器表示“真正负责一步一步取值的对象” 生成器表示“用 yield 快速创建出来的迭代器” 后面的 for 循环,本质上就是先从可迭代对象拿到迭代器


【架构实战】ElasticSearch搜索集群:全文检索的艺术
heimeiyingwang2026/5/31

【架构实战】ElasticSearchæœç´¢é›†ç¾¤ï¼šå ¨æ–‡æ£€ç´¢çš„è‰ºæœ¯ 倒排索引、分片副本、搜索优化、实战案例 ä¸€ã€ä»Žä¸€ä¸ªçœŸå®žçš„æ• äº‹è¯´èµ· 2024年双十一,某电商平台搜索系统在流量洪峰到来的那一刻,突


豆包收费了:3.45亿用户,一个“豆包型人格“的道歉经济学
倔强的石头_2026/5/9

5月4号,两个微博热搜几乎同时炸了——#豆包错误率# 和 #豆包笨还收费#。 前一天,豆包刚刚在App Store页面更新了付费订阅声明:标准版68元/月,加强版200元/月,专业版500元/月。作为目前国内月活超过3.45亿的AI助手——这个数字意味着大约每四个中国人里就有一个人在用豆包——这是字节跳动第一次正式给豆包贴上价格标签。 但市场的反应不是期待,而是愤怒。 “又笨又收费,说平时用免费版,经常答非所问,信息出错,逻辑也不严谨,有时候还一本正经地胡说八道,基础功能都没做好。” “免费的


解锁AI编程密码:程序员常用的10个AI提示词
小码哥_常2026/4/30

解锁AI编程密码:程序员常用的10个AI提示词 引言:AI 时代的编程利器 在当今数字化浪潮中,编程领域正经历着前所未有的变革,AI 的加入让程序员们如虎添翼。有这样一个真实的故事,程序员小李在开发一个电商项目的订单管理模块时,遇到了性能瓶颈。原本处理大量订单数据时需要耗费很长时间,导致用户在下单和查询订单状态时响应迟缓。小李尝试了各种常规优化手段,但效果甚微,他陷入了困境,项目进度也因此受阻。 后来,小李了解到可以借助 AI 来解决问题。他在 AI 编程助手的输入框中输入了这样一个提示词:“A


GPT-Image-2 真有点夯:中文不乱码了!GPT-Image-2的入口在哪?教你如何确认自己是否被灰度推送了 GPT-Image-2
摆烂工程师2026/4/21

不知道大家有没有被 OpenAI 最近推出的 GPT-Image-2 惊讶到! 这几天,我用 GPT-Image-2 制作了各种主题的图片,简直夯爆了! 首先汉字提升巨大!另外就是高密度的文字生成,几乎没有乱码! 测试出来的效果,大家直接去生成对比,目前 GPT-Image-2 就是文生图的新王。 比 Nano Banana Pro 香多了! 怎么体验 GPT-Image-2 呢? 目前,官方已经进行灰度分发到 ChatGPT 上,优先美区,只要订阅了 Plus、Pro、Business 等用户


越用越强不是广告语:拆解 Hermes Agent 的三层学习机制
小墨同学boy2026/4/12

用 AI agent 有一段时间了,有个问题一直没解决:每次开新会话,它对我的项目和习惯还是一无所知。上下文配置文件里写了不少,但写进去的是静态的——它不会自己学,也不会根据我真实的操作习惯去调整。跑得熟不熟,完全取决于我自己有没有空去维护那份文件。 Hermes Agent 是 Nous Research 今年二月发布的开源代理框架(MIT 协议),主打的就是解决这个问题——让 agent 从使用中自己学,不靠你手动补。这篇主要拆它三层学习机制怎么运转,以及和 OpenClaw 的根本差在哪里


记录 idea 启动 tomcat 控制台输出乱码问题解决
2601_949818092026/4/4

文章目录 问题现象解决排查过程 1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中,修改`Custom VM Options`完成后保存,并重启 idea 问题现象 运行 tomcat 后,控制台输出乱码 解决排查过程 1. 检查 idea 编码设置 进入 File -> Settings在设置窗口中,导航到 Editor -> File Encodings。确保 Gl


【iOS】Effective Objective-C第四章
库奇噜啦呼2026/3/27

【iOS】Effective Objective-C第四章 协议与分类通过委托与数据源协议进行对象间通信将类的实现代码分散到便于管理的数个分类之中勿在分类中声明属性使用“class-continuation分类“隐藏实现细节通过协议提供匿名对象 协议与分类 协议和分类都是OC的一项重要语言特性。 协议:OC不支持多重继承,因而我们把某个类该实现的一系列方法定义在协议里面。协议最为常见的用途是实现委托模式。分类:利用分类,我们无须继承子类即可直接为当前类添加方法。 通过委托与数据源协

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读