数据库专题
数据库内核是计算机系统软件中最复杂的领域之一。本专题收录我在 PostgreSQL / openGauss 内核开发、分布式一致性(Raft / DCF)、逻辑解码与双向同步、存储引擎等方向的实战笔记与源码解读,希望对同样走在这条路上的同行有所启发。
作为长期在 PostgreSQL 与 openGauss 内核一线搬砖的工程师,我日常的工作内容大致涵盖:内核源码阅读与 Bug 定位、新特性设计(如 DDL-Replay 双向同步)、分布式一致性模块开发(DCF / Raft)、性能调优与故障排查。下面把博客里相关的文章按主题串成一张导览图,方便按需取用。
主题导览图
下面这张关系图勾勒了数据库内核的八大主题及其依赖关系:内核基础是底盘,向上分支出 MVCC/事务、逻辑复制、分区与性能调优;这些基础模块共同支撑高可用与复制,并最终汇聚到分布式一致性这一最高层。点击下方任一主题卡片,可直接进入对应主题的全部文章列表。
主题卡片矩阵
下面每个卡片对应一个数据库内核主题。卡片显示主题简介、文章总数和最近 5 篇文章;点击主题名或卡片可进入 /tags/<主题>/ 自动聚合页。新增文章只需在 tools/sync-hexo.py 的 TOPIC_RULES 中加入匹配规则,文章就会出现在对应主题卡片里,无需手动维护本页。
全部文章(按时间倒序)
下面这个列表是数据库分类下所有文章的平铺时间线,与上面卡片矩阵的数据源相同,但作为兜底展示。新增章节时,只需在目录的 cascade.categories 中加入”数据库”,无需再手工维护本页链接。
- PostgreSQL libpq 机制与缓冲区详解
- PostgreSQL Latch 机制详解:从一行 SetLatch 到 epoll 的内核之旅
- PostgreSQL 内核开发:读取一张表的 9 步标准流程与缓存全景
- PostgreSQL Background Worker 全解:从
RegisterBackgroundWorker到逻辑复制 4 类 worker 的全生命周期 - PostgreSQL 18 并行 Worker 机制全解:从
ParallelContext到ParallelQueryMain的全链路 - pgbench 源码全解:一个 C 文件如何撑起 PostgreSQL 官方压测工具
- PostgreSQL 18 逻辑复制的并行解码与并行 Apply:源码全景
- PostgreSQL 逻辑复制性能与速率测试:从一个公开的”没有”讲起
- 从
postgres二进制到生产级守护 —— PostgreSQL 最外层模块与启动全流程拆解 - 为什么要对数据库进行细分:从 RDBMS 到 12 类专用数据库的全景图
- 选数据库的时候,我们究竟在选什么 —— 当基础能力都满足时,哪些维度让数据库”脱颖而出”
- 当我们在说”数据库”的时候,我们到底在说什么 —— 从用户的视角拆解 PostgreSQL 的能力与接口
- PostgreSQL 逻辑复制集群搭建指北:基于 Docker 的 publisher + subscriber 一键拉起
- PostgreSQL 逻辑复制支持 DDL 之后:DDL 与 DML 的时序难题(重点:分区表)
- PostgreSQL 逻辑复制的 ReorderBuffer 与事务机制:从一行 WAL 到一致性变更流的全链路绑定
- PostgreSQL 逻辑复制的监控:六张视图 + 一组可执行 SQL,把 publisher/subscriber 的速率与健康度彻底看透
- PostgreSQL 逻辑复制 spill 文件深度剖析:从
xid-*.spill到 TPC-C 的增长方程 - PostgreSQL 逻辑复制 streaming 与 spill:从 reorderbuffer 到
<subid>-<xid>.changes的全程真相 - PostgreSQL 逻辑复制表的生命周期:从
pg_replication_slots到pg_subscription_rel的全景图 - PostgreSQL 逻辑复制:
publish_via_partition_root的完整行为分析 - PostgreSQL 逻辑复制下分区表的 INSERT:从 publisher 到 leaf 的完整时序
- PostgreSQL 逻辑复制:DDL 同步后如何启动 apply worker 同步 DML(分区表专题)
- PostgreSQL 逻辑复制的 Worker 模型:一个 apply worker 撑全场,分区表也一样
- PostgreSQL 逻辑复制与分区表:从 publisher 到 partition leaf 的全链路
- PostgreSQL vs SQL Server 分区表实战:步骤、场景与差异对比
- PostgreSQL 分区表:从一行
PARTITION BY到路由热路径的全链路拆解 - PostgreSQL “Don’t Do This” 完整中文版
- 真希望有人早点告诉我的 Postgres 经验
- PostgreSQL 万能论:为什么一家公司可以用它替代 Kafka、Redis、Elastic 与 ClickHouse
- PostgreSQL 逻辑复制订阅参数全解:从 run_as_owner 到 disable_on_error
- PostgreSQL 内存管理:一片共享内存,三座分配器,一座缓冲池
- PostgreSQL 事务:一次 BEGIN 与 COMMIT 背后的双层世界
- PostgreSQL MVCC:一条数据是如何拥有”分身术”的
- BenchmarkSQL 使用教程:从配置到运行机制分析
- 01 编译调试与代码布局
- 02 进程架构与生命周期
- 03 查询管线全景
- 04 存储抽象层 SMGR
- 05 缓冲区管理
- 06 堆表与 MVCC
- 07 B-Tree 索引
- 08 事务、锁与并发
- 09 WAL 与恢复
- 10 进阶特性
- 11 崩溃恢复深入
- 12 物理复制深入
- 13 逻辑复制深入
- 14 列存与 cstore_fdw
- polardb竞争力分析
- dcf运行机制
- 一文读懂openguass dcf网络模块
- dcf写入机制
- dcf投票系统详解
- 常用压缩算法编程
- raft重要概念
- openguass dcf源码阅读
- c-raft
- c-raft分布式存储方案
- raft协议动态调整quorum
核心技术栈
学习路径建议
如果你刚接触数据库内核开发,建议按下面这条路线循序渐进,每一档都附上对应的站内文章入口:
- 入门:PostgreSQL 基操 → 源码编译 → 启动流程。先把一份能跑、能断点的内核源码环境搭起来。
- 存储与 WAL:FSM 文件解析 → full_page_writes → WAL 机制浅析 → 崩溃恢复。理解”数据页 + WAL + 检查点”这一数据库的基石三角。
- 进程与执行器:BgWriter → Checkpoint → WalWriter → insert 语句执行过程。把后台进程和查询执行的主干打通。
- 复制与高可用:流复制与 WAL 日志 → 同步流复制原理 → WalReceiver / WalSender 交互 → repmgr 实现原理 → 伪双写。
- 事务与并发控制:事务管理 → 并发控制 → MVCC 源码解读 → 锁等待排查。
- 逻辑解码与双向同步:逻辑复制源码分析 → PG15 逻辑复制支持 DDL → pglogical 详解 → DDL-Replay 框架设计 → AI 逻辑解码。
- 分布式一致性:Raft 重要概念 → 一文读懂 openGauss DCF 网络模块 → DCF 投票系统详解 → DCF 运行机制 → DCF 写入机制 → Raft 协议动态调整 quorum。
实战经验沉淀
- 内核 Bug 定位:熟悉 gdb / perf / bpftrace 的组合用法,能从 panic 日志反推到具体的代码行。
- 性能优化:在 openGauss 内核侧主导过 WAL 写入路径优化、复制槽回收策略改造等专项,单节点写入吞吐有数倍提升。
- 架构设计:完整设计过一套基于 DCF 的两地三中心高可用方案,覆盖网络分区、脑裂、自动切换、降级运行等场景。
推荐阅读顺序
如果你只想读 5 篇文章理解数据库内核的脉络,我会推荐:
这五篇涵盖了存储、复制、分布式一致性与逻辑同步四条主线,足以勾勒出数据库内核的整体图景。
写在最后
数据库内核开发是一个”慢就是快”的领域:每一次对一行代码的深入理解,最终都会在某个深夜的故障排查里兑现回报。本专题会持续更新,把每一段新的源码阅读笔记、每一次新的故障复盘都沉淀下来。也欢迎通过 GitHub 与我交流。