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

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

文章导航

分类入口
databasestorage
标签入口
#wiredtiger#postgresql#innodb#rocksdb#mvcc#wal#buffer-pool#comparison#mongodb

目录

读完本系列主线后,选型前需要一张机制对照表:同一问题(缓存、耐久、旧版本、故障)在四条工程路径上如何回答。口径与 第 08 篇 第七节一致——机制与代价,不是延迟排名;本站无跨引擎一手 benchmark。

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

先修:第 1、8、9–10 篇;可选 mvccInnoDB Undopostgresql-kernelrocksdb。续读:第 17 篇选型。


一、总表

维度 PostgreSQL InnoDB RocksDB WiredTiger(MongoDB)
默认优化 服务器 SQL 行存 服务器 SQL 聚簇行存 嵌入 LSM KV 文档库嵌入 B-Tree + HS
缓存 Buffer pool(页格式近磁盘) Buffer pool Block cache + MemTable Cache:内存页 ≠ 磁盘页
脏页写出 检查点等 刷脏 / checkpoint 类 Flush / compaction Evict/Checkpoint 前 reconcile
WAL WAL + redo Redo (+ undo 旁路) WAL + Manifest Journal + checkpoint;RTS 收时间戳表
MVCC 落点 堆内多版本 Undo 旁路 常靠上层 ts 编码 / 快照 用户表最新 + History Store
旧版本回收 VACUUM Purge Compaction / TTL 等 HS tombstone + oldest/窗口
典型故障形态 表膨胀、长事务 Undo history 过长 写停顿、L0 堆积 HS 膨胀、dirty eviction 尖刺

学术词汇仍统一到 Berenson et al., SIGMOD 1995;物理落点分叉见第 1、8 篇谱系。


二、分项说明

2.1 缓存与脏页

WT 显式区分 in-memory 与 on-disk(第 3、6 篇);dirty 离开 cache 的成本绑在 reconcile + 可能的 HS 写入上。PG/InnoDB 更接近「池中页 ≈ 磁盘页 + 少量修饰」。RocksDB 前台写走 MemTable,持久化形态是 SST,与页式 reconcile 不是同一物种。

2.2 耐久

四者都有「检查点/版本编辑 + 日志」思想。WT:checkpoint 钉一致点,journal 盖间隙,RTS 处理时间戳不稳定侧(第 9–11 篇)。RocksDB:WAL + VersionSet/MANIFEST。不要把运维口令(如「checkpoint 间隔」)跨引擎照搬数值。

2.3 MVCC

落点 代表 主表上 旧版
堆内 PG 新旧元组 同表 + VACUUM
Undo InnoDB 当前行 Undo
History WT 最新已提交 WiredTigerHS.wt
LSM+上层 RocksDB/TiKV 等 SST 中多版本键 Compaction 回收

第 08 篇已论证:无工作负载的普适赢家;文档整值进 HS 时空间模型与「改一个字段」直觉不对齐。

2.4 故障与排障入口


三、开放对照问题(不关闭)

  1. HS 与 undo 在「小字段高频更新」下的空间曲线——需同负载实测。
  2. LSM 与 B-Tree+HS 在写突发 + 点查混合下的尾延迟——本站未测,见 rocksdb 第 1 篇 开放问题口径。

四、收束

对照表用于排除错误类比(「HS 就是 undo」「cacheSize 等于 shared_buffers」),不是选分排名。下一篇给出何时选 MongoDB/WT 的决策树并回收系列开放问题。


参考资料


上一篇运维与排障
下一篇选型与阅读地图

同主题继续阅读

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

2026-07-22 · db / storage

数据库内核实验索引

汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存、湖仓、流处理、查询引擎、RocksDB、向量、Redis、全文检索、TiKV/HTAP、FoundationDB、SQLite 与 WiredTiger 内核,以及 LSM-Tree 实验与其它单篇。


By .