> 本文是写作规划,不是可发布正文。拆解对象:MongoDB 默认存储引擎 WiredTiger——Cache / Eviction / B-Tree update chain / Reconciliation / Timestamps·Snapshot / History Store / Checkpoint·Jou…
定位文档库默认引擎 WiredTiger 相对 PG/InnoDB/SQLite/RocksDB 的生态位;钉住 Session→Cache→Reconcile→HS→Checkpoint 主线、站内分工与 17 篇阅读路线,并以 Berenson 隔离词汇与 Durable History 为学术/工程锚点。
钉住 WiredTiger 的 Connection 独占实例、Session 单线程与单事务、Cursor 归属会话等不变量;对照 MongoDB 连接池心智,并为后续 Cache/Eviction 章节提供 API 入口。
拆解 WiredTiger Cache 的 clean/dirty 计量、WT_REF/WT_PAGE 按需加载,以及 update chain / insert list 如何挂在页上;说明 cache_size 不计 session/cursor,并为 Eviction 章节铺垫 dirty 必须先 reconcile。
拆解 WiredTiger Eviction 的 server/worker/队列、target/trigger 阈值,以及 dirty eviction 经 reconciliation 把最新值写入用户表、旧版本写入 History Store;说明应用线程被迫协助驱逐的条件。
拆解 WiredTiger row-store B-Tree 的 WT_BTREE/WT_REF 结构,以及叶页上 WT_INSERT skiplist 与 WT_UPDATE 链如何承载插入与多版本;说明未提交更新不进磁盘镜像,为 Reconciliation 与 History Store 铺垫。
拆解 WiredTiger reconciliation:把 in-memory 页转为 on-disk image、按 leaf_page_max 与 split_pct 分裂,并在用户表 reconcile 时选出最新已提交值、将更旧更新写入 History Store;锚定 wiki 与 src/reconcile/。
拆解 WiredTiger 应用时间戳(oldest/stable/pinned)、事务 read/commit timestamp、快照隔离下的可见性检查,以及 prepared 的 prepare/durable 边界;为 History Store 与 Rollback-to-Stable 提供时间轴。
拆解 WiredTiger checkpoint 算法:先借 eviction 减压,再按用户表→History Store→元数据顺序 reconcile 并原子切换;说明 checkpoint generation 与 eviction 的可见性约束,以及与 journal 的耐久分工。
拆解 WiredTiger write-ahead log:WiredTigerLog 文件、LSN、slot 无锁写入、checkpoint 之后自动删日志,以及崩溃恢复时从最近 checkpoint 回放;并标出与 MongoDB journaling 配置的边界。
拆解 WiredTiger RTS:按 durable/stable 与 recovery checkpoint snapshot 判定不稳定更新,读 History Store 写回用户表,并在启停与 API 路径上独占运行;说明与 prepared、checkpoint、eviction 的交互边界。
拆解 WiredTiger Block Manager:块与 address cookie、无覆盖写入、checkpoint 的 alloc/avail/discard extent list,以及 allocation_size 与 checksum;压缩只作入口,不写各 codec 手册。
拆解 WiredTiger compaction 如何把文件尾块前移并依赖多次 checkpoint 才能截断文件;说明 backup cursor 期间禁用日志删除与预分配的契约,以及 background compaction 的节流条件。
对照 MongoDB 手册与本系列机制:cacheSizeGB、约 60s checkpoint、journal 与 minSnapshotHistoryWindowInSeconds 如何映射到 WT Cache/Checkpoint/Logging/HS;复制集与分片只作边界,不展开。
给出 WiredTigerHS.wt 膨胀、cache dirty/eviction 压力、长游标与备份窗口的可复现排查口径;强调禁止手工删除 HS/日志文件,并把现象映射回本系列机制篇。
按缓冲池、写前日志、MVCC 落点、脏页写出与故障模式对照 PostgreSQL、InnoDB、RocksDB 与 WiredTiger;只谈机制与代价,不写未实测延迟排名。
给出相对 PG/InnoDB/SQLite/RocksDB 的选型决策树,回收 History Store 与 cache 公平性等开放问题,并收束 WiredTiger 内核 17 篇阅读地图。
补齐文档库默认引擎内核层:从 Connection/Session、Cache/Eviction、B-Tree update chain、Reconciliation 到 Timestamps、History Store、Checkpoint/Journal 与 Rollback-to-Stable,并以 MongoDB 嵌入边界与 PG/InnoDB/RocksDB 对照收束。
本文已迁入 WiredTiger 内核系列第 08 篇,请改读新路径。
拆解 MongoDB WiredTiger 如何把旧版本挪到 History Store(WiredTigerHS.wt),在 reconciliation / eviction 后仍服务快照读;对照 PostgreSQL 堆版本与 InnoDB undo,并交代 Lookaside 到 Durable History 的工程分叉。
完成下面两步后,将自动完成登录并继续当前操作。