土法炼钢兴趣小组的算法知识备份

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

文章导航

分类入口
databasestorage
标签入口
#wiredtiger#mongodb#cacheSizeGB#checkpoint#journaling#minSnapshotHistoryWindowInSeconds#embed

目录

前 13 篇按 WiredTiger Architecture Guide 钉机制;生产上读者面对的是 mongod 参数与数据目录文件名。MongoDB Manual WiredTiger Storage Engine(以 8.0 文档树为准)把引擎行为收成运维可调旋钮。本文只做映射表与边界,不写复制集/分片/Change Stream 全书(系列承诺)。

本文是「WiredTiger 内核」系列第 14 篇(共 17 篇)。→ 系列目录

先修:第 3–4、8–11 篇。续读:第 15 篇排障。

版本锚定:MongoDB Manual v8.0 WiredTiger Storage Engine / Journaling 相关页;机制回指本系列 WT Guide 锚点。手册与 Guide 冲突时,排障以所部署 MongoDB 小版本手册 + 所带 WT 为准


一、手册已钉死的三句话

与本系列直接对齐(MongoDB Manual WiredTiger Storage Engine):

  1. MVCC 快照:操作开始时 WT 提供 point-in-time 快照。
  2. Checkpoint:把某快照一致地写入各数据文件;MongoDB 配置 WT 约每 60 秒做一次 checkpoint。
  3. Journal:checkpoint 之间的修改由 write-ahead log(journal)持久化;进程在 checkpoint 之间退出时靠 journal 回放。

这与第 7、9、10 篇的 WT 契约同构,只是触发周期与文件命名由 MongoDB 嵌入层设定。


二、参数 ↔︎ 机制映射

MongoDB 侧(常见名) 映射到的 WT / 本系列机制 注意
storage.wiredTiger.engineConfig.cacheSizeGB / --wiredTigerCacheSizeGB 第 3 篇 cache_size;默认常为约「(RAM−1GB) 的 50%」与下限之较大者(以手册公式为准) 手册建议勿轻易大于默认;OS filesystem cache 仍承载压缩数据文件。另有 cacheSizePct 变体
Checkpoint ~60s 第 9 篇内部 checkpoint 线程 间隔是嵌入配置,不是「可关 checkpoint」
Journal / storage.journal.commitIntervalMs 第 10 篇 logging;写关注 j:true / majority 等会逼 sync 具体 sync 条件以 Journaling 手册为准
minSnapshotHistoryWindowInSeconds(5.0+) 第 7–8 篇 oldest/历史保留;磁盘上体现为 WiredTigerHS.wt 加大窗口 → 磁盘↑;空间随更新负载升
表/journal 压缩选项 第 12 篇压缩入口 不在此列 codec 性能表
flowchart TB
  mongod["mongod config"] --> cache["cacheSizeGB → WT cache"]
  mongod --> ckpt["~60s checkpoint"]
  mongod --> jnl["journal ↔ WT log"]
  mongod --> win["history window → HS retention"]
  cache --> series["Series 03-04"]
  ckpt --> series9["Series 09"]
  jnl --> series10["Series 10"]
  win --> series8["Series 08"]

三、数据目录里的关键文件(只点名)

文件 系列落点
集合/索引 .wt 用户表 B-Tree 块(第 5、12 篇)
WiredTigerHS.wt History Store(第 08 篇);禁止手工删
WiredTigerLog.* Journal(第 10 篇)
turtle / 元数据 Checkpoint 指针(第 9、12 篇)

四、明确不展开的边界

话题 本系列态度
复制集、oplog 应用、从库延迟 边界句:延迟可拖住 oldest / 放大 HS(第 08 开放问题);机制在 WT,策略在复制
分片、balancer、chunk 不写
Change Stream 不写
查询计划、聚合 不写
云托管定价、Atlas 特有旋钮 不写

Prepared / 多文档事务如何设置 prepare/durable timestamp,由 MongoDB 事务层驱动 WT(第 7、11 篇);本篇不画会话状态机。


五、收束

  1. MongoDB 把 WT 的 cache / checkpoint / journal / 历史窗口暴露为少量运维旋钮;默认 checkpoint ~60s、HS 窗口影响 WiredTigerHS.wt
  2. 调参前先回到对应机制篇,避免「只加 cache」或「删 HS 文件」。
  3. 下一篇:运维与排障——可复现口径与禁止事项。

参考资料


上一篇Compaction 与 Backup
下一篇运维与排障

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-07-22 · database / storage

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

拆解 WiredTiger reconciliation:把 in-memory 页转为 on-disk image、按 leaf_page_max 与 split_pct 分裂,并在用户表 reconcile 时选出最新已提交值、将更旧更新写入 History Store;锚定 wiki 与 src/reconcile/。

2026-07-22 · database / storage

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

拆解 WiredTiger checkpoint 算法:先借 eviction 减压,再按用户表→History Store→元数据顺序 reconcile 并原子切换;说明 checkpoint generation 与 eviction 的可见性约束,以及与 journal 的耐久分工。


By .