小红花·文摘
  • 首页
  • AI Tokens🪙
  • 排行榜🏆
  • 直播
  • FAQ
沉浸式翻译 immersive translate
Dify.AI

> 本文是写作规划,不是可发布正文。拆解对象:MongoDB 默认存储引擎 WiredTiger——Cache / Eviction / B-Tree update chain / Reconciliation / Timestamps·Snapshot / History Store / Checkpoint·Jou…

WiredTiger 内核 — 系列规划

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T16:08:29Z

本文介绍WiredTiger作为MongoDB默认存储引擎的内核机制,定位为文档库页式B-Tree加旁路History Store,与PG/InnoDB、SQLite、RocksDB等分工明确。文章规划17篇系列,涵盖Session、Cache、Eviction、Reconciliation、Timestamps、Checkpoint等核心流程,并指出脏页须先reconcile才能驱逐,HS体积受更新率与窗口影响,为后续深入解析奠定框架。

【WiredTiger 内核】文档库存储引擎全景:MongoDB 默认引擎的生态位

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎中Connection、Session、Cursor三层句柄的生命周期与线程模型。Connection独占数据库实例,Session单线程且同时仅持有一个事务,Cursor由Session拥有并共享事务上下文。文章强调多线程应共享Connection但各自持有Session,并澄清常见误解,为后续Cache与Eviction章节铺垫。

【WiredTiger 内核】Connection / Session / Cursor:线程与 API 边界

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的缓存机制。缓存按需加载B-Tree页,WT_REF表示页是否在内存,WT_PAGE是已加载形态。缓存计量区分clean和dirty页,dirty页必须经reconcile转换后才能写盘。修改通过WT_UPDATE链和WT_INSERT跳表记录,session和cursor不计入缓存配额。与PostgreSQL不同,WT将内存布局与磁盘格式分离,并支持共享缓存模式。

【WiredTiger 内核】Cache 与 WT_REF:clean/dirty 计量与按需读页

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

WiredTiger的Eviction机制通过server线程近似LRU选页,worker线程执行驱逐,区分clean(直接释放)和dirty(需reconcile,最新值进用户表,旧版进History Store)。配置target/trigger控制后台或应用线程参与驱逐,dirty超限时应用线程被迫协助。Eviction也是checkpoint前置减压阀,HS页同样参与驱逐。

【WiredTiger 内核】Eviction:脏页必须先 reconcile

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎中B-Tree叶页的内存结构:新键通过WT_INSERT skiplist插入,已有键的修改挂入WT_UPDATE链表,未提交更新仅挂链不写入磁盘。读路径按时间戳在链上查找可见版本,旧版本在reconcile时移入History Store。文章还提及truncate操作及与日志回放的边界,为后续Reconciliation章节铺垫。

【WiredTiger 内核】B-Tree 与 update chain:未提交更新只挂链

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

WiredTiger的reconciliation将内存页转为磁盘格式,触发于脏页驱逐和检查点。用户表保留最新已提交更新,旧版本写入History Store。行存储叶页按序遍历,依leaf_page_max和split_pct分裂为多页镜像。History Store页reconcile时移除全局可见墓碑。Eviction为腾缓存,Checkpoint为一致快照,两者分工明确。

【WiredTiger 内核】Reconciliation:内存页到 on-disk image

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的时间戳与快照机制。核心概念包括:应用时间戳由上层控制,执行时间是墙上时钟;active time window由oldest、stable、pinned界定可读与可丢弃历史;快照通过max/min/并发事务ID列表决定可见性;默认snapshot隔离,prepared事务有特殊边界。文章强调时间戳与快照共同支撑MongoDB的MVCC实现。

【WiredTiger 内核】Timestamps、Snapshot 与事务:可见性契约

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的Checkpoint机制,作为崩溃恢复的已知时间点,与日志共同保证耐久性。流程包括加锁、eviction减压、准备、用户表reconcile、History Store(故意后置以包含新增写入)、落盘及元数据更新。通过generation防止eviction超前,支持并行checkpoint,并与Journal分工协作。

【WiredTiger 内核】Checkpoint:跨文件一致快照

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger日志系统:WAL文件为WiredTigerLog.*,预分配用Tmplog/Preplog;提交时写commit记录,崩溃恢复从最近checkpoint回放;热路径用lock-free slot池,内部线程分工;backup cursor打开时禁用自动删除和预分配。

【WiredTiger 内核】Journal / Logging:Checkpoint 之间的 WAL

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger的Rollback to Stable(RTS)机制:当stable时间戳落后于durable或存在未提交事务时,RTS扫描表并移除不稳定修改,保留稳定版本。它跳过logged表,需独占数据库,完成后常执行checkpoint。RTS通过时间聚合减少读页,并处理History Store中的不稳定条目,确保恢复后数据一致性。

【WiredTiger 内核】Rollback to Stable:把库收到稳定时间戳

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的Block Manager子系统。每个数据文件由若干块组成,采用无覆盖分配策略,重写时写入新位置。块通过address cookie寻址,包含偏移、大小和校验和。分配使用best fit或first fit策略,checkpoint维护alloc、avail、discard三张extent列表管理空间。写入时计算校验和,支持压缩。旧checkpoint删除后块才可复用。

【WiredTiger 内核】Block manager、页格式与压缩

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的compaction机制:通过将文件尾部块前移到可复用区间,再多次checkpoint后truncate缩小文件,但为best-effort不保证成功。同时说明backup cursor打开期间禁用日志删除与预分配改名,保证备份一致性,但会导致日志堆积,备份窗口应有界。

【WiredTiger 内核】Compaction 与 Backup:空间回收与一致性边界

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍MongoDB手册中WiredTiger存储引擎的运维参数映射:缓存大小、约60秒检查点、日志与历史窗口等旋钮对应内核机制;列出数据目录关键文件(.wt、WiredTigerHS.wt、日志等);明确不展开复制集、分片等边界;强调调参前需回看机制篇,避免误操作。

【WiredTiger 内核】MongoDB 嵌入边界:cache、checkpoint 与历史窗口

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger排障方法,强调禁止删除HS或日志文件、多实例写同一路径。按现象分类:HS增长查历史窗口与长事务;缓存压力查dirty与eviction;长游标拖住历史回收;日志堆积因备份游标泄漏;启停慢因RTS与HS体积。建议观测serverStatus、文件大小与应用慢查询,并记录版本与采样时间。

【WiredTiger 内核】运维与排障:HS 膨胀、cache 压力与长游标

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文对比PostgreSQL、InnoDB、RocksDB和WiredTiger四种存储引擎,从缓存、脏页、WAL、MVCC落点、旧版本回收及故障形态等维度列出机制对照表,强调机制与代价而非性能排名。指出WiredTiger区分内存与磁盘页,HS存储旧版本,并提醒避免跨引擎类比运维参数,为选型提供参考。

【WiredTiger 内核】与 PG / InnoDB / RocksDB 机制对照

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文为WiredTiger内核系列终篇,提供选型决策树:文档模型且需MongoDB生态选WiredTiger;否则按需选PG/InnoDB、SQLite或RocksDB。同时回收开放问题,给出17篇阅读地图,强调脏页需reconcile、旧版进History Store,并指出选WT应基于文档生态而非性能承诺。

【WiredTiger 内核】选型与阅读地图:何时 MongoDB / WiredTiger

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger内核系列文章,涵盖MongoDB默认引擎的MVCC实现路径,包括Cache、Eviction、Reconciliation、History Store和Checkpoint等核心机制。系列共17篇,从Session/Cursor到选型对照,重点解析更新链、脏页驱逐、旧快照读取及崩溃恢复,并对比PG、InnoDB、RocksDB等引擎,为运维和架构师提供完整技术参考。

【WiredTiger 内核】Cache · Eviction · Reconciliation · History Store · Checkpoint

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

WiredTiger采用第三种MVCC方案:用户表B-Tree仅存最新已提交版本,旧版本存入全局History Store(WiredTigerHS.wt)。写路径通过reconciliation将旧版本写入HS,读路径按update chain→磁盘页→HS顺序查找。Durable History取代Lookaside,使历史可跨eviction/checkpoint持久查询,由minSnapshotHistoryWindowInSeconds控制保留窗口。与PostgreSQL堆版本、InnoDB undo相比,WT分离当前与历史,利于用户页驱逐,但增加历史I/O与磁盘开销。

【WiredTiger 内核】History Store 与 Durable History(已迁入系列第 08 篇)

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-19T00:00:00Z

WiredTiger通过History Store实现MVCC:用户表仅存最新已提交版本,旧版本存入独立的WiredTigerHS.wt文件。读路径按update chain→磁盘页→History Store顺序查找。相比Lookaside,Durable History提供跨eviction/checkpoint的可查询历史契约,由minSnapshotHistoryWindowInSeconds控制保留窗口。与PG堆版本、InnoDB undo相比,WT将当前与历史分离,利于用户页驱逐,但增加历史I/O与磁盘开销。

【WiredTiger 内核】History Store 与 Durable History:文档库里的第三种 MVCC

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-19T00:00:00Z
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码