Day03|用生产硬核笔记逆向解构《DDIA》第三章:从存储引擎走向分布式状态机 文章目录Day03|用生产硬核笔记逆向解构《DDIA》第三章:从存储引擎走向分布式状态机0. 案例原文 / 关联原文链接映射1. Day03 总纲:Storage and Retrieval 的真正主线2. 案例一:WAL / binlog / redo / archive log —— 日志是状态机复制的唯一可信输入2.1 案例原文链接2.2 生产表象与链路2.3 你的笔记优势2.4 认知盲区:把 WAL 降维成吞吐瓶颈,漏掉状态机复制的确定性2.5 反证思维:备库 worker 无限加大能否解决延迟?2.6 分布式本源:WAL 是状态机复制,不是附属日志2.7 架构终局设计:从“复制延迟治理”升级为“状态机输入治理”1. 物理链路治理2. 状态机回放治理3. 应用层输入治理2.8 升级版故障结论3. 案例二:B-Tree vs LSM —— 存储结构决定分布式扩容与迁移代价3.1 案例原文链接3.2 生产表象与链路3.3 你的笔记优势3.4 认知盲区:把 B-Tree / LSM 机械理解成读写性能对比3.5 反证思维:只看到 LSM compaction 抖动,会错过什么?3.6 分布式本源:索引结构决定状态移动的物理粒度3.7 架构终局设计:从“索引调优”升级为“状态移动设计”3.8 升级版故障结论4. 案例三:Buffer Pool / Page Cache / Checkpoint —— 缓存不是省内存,而是 MTTR 的确定性边界4.1 案例原文链接4.2 生产表象与链路4.3 你的笔记优势4.4 认知盲区:把 Buffer Pool / Page Cache 的冲突降维成缓存内耗4.5 反证思维:只依赖 OS Page Cache 会发生什么?4.6 分布式本源:Checkpoint 是恢复时间的物理锚点4.7 架构终局设计:从“缓存调参”升级为“MTTR 预算”4.8 升级版故障结论5. Day03 提炼出的新笔记模板示例一:MySQL 备库延迟示例二:分布式数据库扩容 / 恢复示例三:节点恢复时间不可控6. Day03 最终收束7. Day04 预告:第四章 Encoding and EvolutionDay03|用生产硬核笔记逆向解构《DDIA》第三章:从存储引擎走向分布式状态机Day01 讨论故障如何传播、负载如何放大、状态为什么不可见。Day02 讨论数据模型如何决定系统能看见什么关系。Day03 进入 DDIA 第三章:Storage and Retrieval。这一章如果只读成 B-Tree、LSM、WAL、Buffer Pool 的数据库内部结构,就会再次落回传统 DBA 的调参视角。真正要抓住的是:存储结构如何决定分布式状态的一致性、扩容代价和恢复边界。0. 案例原文 / 关联原文链接映射正文案例原文 / 关联原文链接说明技术笔记总入口喝醉酒的小白 CSDN 主页公开主页MySQL 主备读延迟MySQL 中间件+主备读延迟问题说明主备延迟、读写一致性MySQL binlog 进度mysqlbinlog 如何查看进度binlog 文件、位置、恢复进度MySQL binlog 刷新与清除binlog 的刷新和清除机制binlog 生命周期MySQL 主从 / 主备MySQL 主从和主备的区别复制语义、主备差异MySQL GTID 差异MySQL:主备库的 GTID 差异,从而判断主备库的同步状态GTID 集合与同步状态MySQL 增强半同步切换MySQL 增强半同步模式下主备切换后原主 GTID 更大的原因分析半同步、GTID、切换边界MySQL 主从切换 GTIDMySQL 主从切换 GTID 不一致问题分析与解决方案切换前后 GTID 一致性MySQL 多线程复制MySQL 多线程复制(MTS)性能统计复制回放并行度Oracle 归档模式Oracle 数据库开启归档模式redo 与 archive logOracle ADG FALOracle ADG FAL 参数配置与验证指南归档缺口自动拉取Oracle Data Guard 日志传输Oracle Data Guard 日志传输的底层协议解析LGWR / ARCH / RFS / MRPPostgreSQL 与 Oracle 归档对比PostgreSQL 流复制和 Oracle ADG 关于归档的要求对比WAL / redo / archive 设计差异OceanBase 备份与高可用OceanBase 数据库备份与高可用全面解析:策略、架构与实践分布式数据库备份与高可用平台备份 / NFS / S3QFusion 数据库私有云平台研究报告备份存储、NFS、对象存储TiKV / RocksDB / RaftTiDB Storage 官方文档TiKV 通过 RocksDB 本地存储、通过 Raft 复制TiKV RocksDB 架构RocksDB Overview 官方文档raftdb / kvdb、RocksDB 与 RegionTiDB BR SST 恢复TiDB Snapshot Backup and Restore ArchitectureSplit scatter Region、Download SST、Ingest SSTRocksDB SST Bulk LoadRocksDB Bulkloading by ingesting external SST files外部 SST 文件批量导入OceanBase LSM 存储OceanBase LSM-tree architectureMemTable / SSTable / LSM-treeOceanBase 存储架构OceanBase Storage architectureLSM-Tree、SSTable 只读、多级缓存MySQL GTID 生命周期MySQL GTID Life Cycle 官方文档GTID 在 binlog 中持久化MySQL 备库延迟断崖恢复内部案例,暂无公开原文并行回放、日志依赖、队列堆积Redis AOF fsync 变慢内部案例,暂无公开原文AOF、fsync、写入尾延迟NFS / 备份链路异常内部案例,暂无公开原文备份介质、文件句柄、恢复边界1. Day03 总纲:Storage and Retrieval 的真正主线DDIA 第三章表面上在讲:Hash Index SSTable LSM-Tree B-Tree Column Storage Compaction但如果结合生产环境里的主备延迟、GTID 不一致、ADG 归档缺口、LSM compaction、备份恢复、节点恢复时间、分片迁移,就会发现这一章不是单机数据库调优章节,而是分布式数据库的底层地基。传统 DBA 视角容易把第三章读成:WAL:看日志有没有写满、有没有 fsync 慢。 B-Tree / LSM:比较读写性能。 Buffer Pool / Page Cache:看内存是不是浪费、是不是 O_DIRECT。但分布式系统视角应该这样读:WAL: 不是日志文件,而是状态机复制的线性化输入。 B-Tree / LSM: 不是单机读写性能对比,而是数据迁移、分片扩容、恢复导入的物理边界。 Buffer Pool / Page Cache: 不是缓存内耗,而是 checkpoint 可控性与 MTTR 确定性的边界。所以 Day03 的核心命题要升级为:存储结构决定了分布式系统如何复制状态、迁移状态和恢复状态。【Day03 架构结论】存储引擎不是把数据写进文件的模块,而是分布式系