当前位置: 首页 > news >正文

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 Evolution

Day03|用生产硬核笔记逆向解构《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 log
Oracle ADG FALOracle ADG FAL 参数配置与验证指南归档缺口自动拉取
Oracle Data Guard 日志传输Oracle Data Guard 日志传输的底层协议解析LGWR / ARCH / RFS / MRP
PostgreSQL 与 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 与 Region
TiDB BR SST 恢复TiDB Snapshot Backup and Restore ArchitectureSplit & scatter Region、Download SST、Ingest SST
RocksDB SST Bulk LoadRocksDB Bulkloading by ingesting external SST files外部 SST 文件批量导入
OceanBase LSM 存储OceanBase LSM-tree architectureMemTable / SSTable / LSM-tree
OceanBase 存储架构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 架构结论】
存储引擎不是把数据写进文件的模块,而是分布式系

http://www.jsqmd.com/news/894605/

相关文章:

  • 【大白话说Java面试题 第76题】【Mysql篇】第6题:谈谈你对 Hash 索引的理解
  • 告别命令行!用Qt Creator插件ros_qtc_plugin打造你的ROS图形化开发环境(Ubuntu 20.04 + ROS Noetic)
  • GitHub学生开发者包:免费获取专业开发工具链的完整指南
  • 从政策文档到AI接口:基于MCP协议构建可对话知识库的实践
  • 后台静默失效:系统隐形杀手与高可用架构防御实战
  • Unity PC端内嵌网页别再踩坑了!Embedded Browser 3.1.0插件从下载到交互的保姆级避坑指南
  • AI协同开发实战:从架构设计到部署的十四周SaaS平台构建
  • AutoDL远程桌面连接保姆级教程:从VNC Viewer配置到SSH隧道避坑(附进程管理)
  • Qt跨平台命令行工具实战:从‘Hello Qt’到日志输出和参数解析
  • 规则失效时,内存分析如何成为系统监控的最后防线
  • STM32的IAP升级,为什么你的APP一运行就死机?这5个坑我帮你踩过了
  • 手把手教你理解Xilinx PCIe IP核的AXI-Stream接口:以PG213文档中的m_axis_cq_tuser为例
  • 从地理空间数据云到可玩地图:一套为独立游戏开发者优化的真实地形制作流水线
  • 2026年评价高的UV真空镀膜机/PVD真空镀膜机/不锈钢镀膜机推荐厂家精选 - 行业平台推荐
  • 企业级实时音视频方案怎么选?自建、SDK集成、全托管三套方案成本对比
  • 告别3D转换!用nnUNetv2直接训练你的二维医学图像(Python 3.9 + PyTorch 2.0 保姆级教程)
  • 2026年热门的PE给排水管道/MPP电力管道/PVC打井管道厂家精选合集 - 品牌宣传支持者
  • 避坑指南:Automation Studio变量关联与PCVue数据缩放的那些“坑”
  • 手把手将MobileNetV2部署到树莓派:从PyTorch模型导出到NCNN推理实战(附性能对比)
  • 基于可调度量的球形投影音乐可视化:从原理到工程实践
  • 别再只会用插件了!用Unity UI Toolkit从头构建性能更优的2D小地图(适配移动端)
  • C语言强制类型转换
  • AI代码生成五大症结与可持续集成工作流实践
  • 别再乱填了!Modbus Slave模拟器Connection和Slave Definition参数保姆级配置指南
  • 使用Terraform与Amazon ECS Fargate自动化部署LibreChat AI应用
  • 告别鼠标依赖!用Python的keyboard库打造你的专属键盘快捷键(附完整代码)
  • 物联网设备深度学习模型量化与动态适配技术
  • 别再死记硬背N-S方程了!从OpenFOAM源码看剪切应力张量τ的物理意义与代码实现
  • 闪电演讲:5分钟高效分享,打破团队信息孤岛
  • C语言中“\n”是什么意思