数据库专题


难度 中等

数据库专题

数据库内核是计算机系统软件中最复杂的领域之一。本专题收录我在 PostgreSQL / openGauss 内核开发、分布式一致性(Raft / DCF)、逻辑解码与双向同步、存储引擎等方向的实战笔记与源码解读,希望对同样走在这条路上的同行有所启发。

作为长期在 PostgreSQL 与 openGauss 内核一线搬砖的工程师,我日常的工作内容大致涵盖:内核源码阅读与 Bug 定位新特性设计(如 DDL-Replay 双向同步)分布式一致性模块开发(DCF / Raft)性能调优与故障排查。下面把博客里相关的文章按主题串成一张导览图,方便按需取用。

主题导览图

下面这张关系图勾勒了数据库内核的八大主题及其依赖关系:内核基础是底盘,向上分支出 MVCC/事务、逻辑复制、分区与性能调优;这些基础模块共同支撑高可用与复制,并最终汇聚到分布式一致性这一最高层。点击下方任一主题卡片,可直接进入对应主题的全部文章列表。

graph TD A[内核基础] --> B[MVCC 与事务] A --> C[逻辑复制] A --> D[分区] A --> G[性能调优] B --> E[高可用与复制] C --> E D --> E C --> F[分布式一致性] E --> F H[实战经验] --> A H --> B H --> C H --> G classDef base fill:#4283D4,color:#fff,stroke:#2563EB,stroke-width:2px; classDef mid fill:#10B981,color:#fff,stroke:#059669,stroke-width:2px; classDef adv fill:#EF4444,color:#fff,stroke:#DC2626,stroke-width:2px; classDef tips fill:#84CC16,color:#fff,stroke:#65A30D,stroke-width:2px; class A,G base; class B,C,D mid; class E,F adv; class H tips;

主题卡片矩阵

下面每个卡片对应一个数据库内核主题。卡片显示主题简介、文章总数和最近 5 篇文章;点击主题名或卡片可进入 /tags/<主题>/ 自动聚合页。新增文章只需在 tools/sync-hexo.pyTOPIC_RULES 中加入匹配规则,文章就会出现在对应主题卡片里,无需手动维护本页。

全部文章(按时间倒序)

下面这个列表是数据库分类下所有文章的平铺时间线,与上面卡片矩阵的数据源相同,但作为兜底展示。新增章节时,只需在目录的 cascade.categories 中加入”数据库”,无需再手工维护本页链接。

核心技术栈

PostgreSQL 内核
进程模型 · 存储引擎 · WAL · 复制 · 执行器 · MVCC
openGauss / DCF
分布式一致性 · 日志复制 · 投票机制 · 网络模块
分布式协议
Raft · 多数派 · Quorum 动态调整 · Leader 选举
逻辑解码与双向同步
pgoutput · pglogical · DDL-Replay · 跨版本迁移
多数据库架构对比
PostgreSQL / MySQL / SQLServer / TDengine 横向评测
性能调优与故障排查
Checkpoint · WAL · 锁等待 · 慢 SQL · 崩溃恢复

学习路径建议

如果你刚接触数据库内核开发,建议按下面这条路线循序渐进,每一档都附上对应的站内文章入口:

  1. 入门PostgreSQL 基操源码编译启动流程。先把一份能跑、能断点的内核源码环境搭起来。
  2. 存储与 WALFSM 文件解析full_page_writesWAL 机制浅析崩溃恢复。理解”数据页 + WAL + 检查点”这一数据库的基石三角。
  3. 进程与执行器BgWriterCheckpointWalWriterinsert 语句执行过程。把后台进程和查询执行的主干打通。
  4. 复制与高可用流复制与 WAL 日志同步流复制原理WalReceiver / WalSender 交互repmgr 实现原理伪双写
  5. 事务与并发控制事务管理并发控制MVCC 源码解读锁等待排查
  6. 逻辑解码与双向同步逻辑复制源码分析PG15 逻辑复制支持 DDLpglogical 详解DDL-Replay 框架设计AI 逻辑解码
  7. 分布式一致性Raft 重要概念一文读懂 openGauss DCF 网络模块DCF 投票系统详解DCF 运行机制DCF 写入机制Raft 协议动态调整 quorum

实战经验沉淀

  • 内核 Bug 定位:熟悉 gdb / perf / bpftrace 的组合用法,能从 panic 日志反推到具体的代码行。
  • 性能优化:在 openGauss 内核侧主导过 WAL 写入路径优化、复制槽回收策略改造等专项,单节点写入吞吐有数倍提升。
  • 架构设计:完整设计过一套基于 DCF 的两地三中心高可用方案,覆盖网络分区、脑裂、自动切换、降级运行等场景。

推荐阅读顺序

如果你只想读 5 篇文章理解数据库内核的脉络,我会推荐:

  1. PostgreSQL 主结构
  2. WAL 机制浅析
  3. PostgreSQL 流复制与 WAL 日志
  4. 一文读懂 openGauss DCF 网络模块
  5. 逻辑解码 DDL-Replay 框架设计

这五篇涵盖了存储、复制、分布式一致性与逻辑同步四条主线,足以勾勒出数据库内核的整体图景。

写在最后

数据库内核开发是一个”慢就是快”的领域:每一次对一行代码的深入理解,最终都会在某个深夜的故障排查里兑现回报。本专题会持续更新,把每一段新的源码阅读笔记、每一次新的故障复盘都沉淀下来。也欢迎通过 GitHub 与我交流。


文章作者: growdu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 growdu !
  目录
分类导航
随笔2 AI27 算法1 计算机基础13 博客搭建7 ChatGPT2 集群63 计算机通信1 数据库34 数据库深入80 DPDK26 Docker11 Elasticsearch4 编辑工具4 FAQ1 Go Web1 hometown2 编程语言16 网络9 OPC1 Linux38 openGauss4 页面12 PostgreSQL54 程序员自我修养1 协议11 成长之路1 stock1 存储5 工具20 VPP18 视频作品1 Vue13 Web1 代码示例11 数据库15 BenchmarkSQL1 PostgreSQL 源码修炼之路14
最热文章
1
13 逻辑复制深入
数据库深入🔥 1570
2
0 Postgresql存储、索引及系统优化、主备切换
PostgreSQL🔥 1495
3
一文读懂openguass dcf网络模块
集群🔥 1420
4
逻辑复制源码分析
数据库深入🔥 1327
5
PostgreSQL 分区表:从一行 `PARTITION BY` 到路由热路径的全链路拆解
数据库🔥 1094
6
applyparallelworker.c 之 LA 端源码深度解析:Leader Apply Worker 的指挥中枢
数据库深入🔥 1082
7
PostgreSQL Background Worker 全解:从 `RegisterBackgroundWorker` 到逻辑复制 4 类 worker 的全生命周期
数据库🔥 1078
8
PostgreSQL的后台进程walsender分析 - 关系型数据库 - 亿速云
PostgreSQL🔥 1033
9
PostgreSQL 逻辑复制的监控:六张视图 + 一组可执行 SQL,把 publisher/subscriber 的速率与健康度彻底看透
数据库🔥 1032
10
PostgreSQL 逻辑复制支持 DDL 之后:DDL 与 DML 的时序难题(重点:分区表)
数据库🔥 999
11
reorderbuffer.c 源码深度解析:PostgreSQL 逻辑复制的"事务重组引擎
数据库深入🔥 953
12
PostgreSQL 内核开发:读取一张表的 9 步标准流程与缓存全景
数据库🔥 938
13
从 `postgres` 二进制到生产级守护 —— PostgreSQL 最外层模块与启动全流程拆解
数据库🔥 936
14
支持逻辑复制同步 DDL 适配 SQL Server 方案
数据库深入🔥 934
15
PostgreSQL 逻辑复制的 ReorderBuffer 与事务机制:从一行 WAL 到一致性变更流的全链路绑定
数据库🔥 913
16
DDL同步架构(美化版)
数据库深入🔥 908
17
PostgreSQL Latch 机制详解:从一行 SetLatch 到 epoll 的内核之旅
数据库🔥 871
18
pgbench 源码全解:一个 C 文件如何撑起 PostgreSQL 官方压测工具
数据库🔥 860
19
PostgreSQL libpq 机制与缓冲区详解
数据库🔥 850
20
PostgreSQL 逻辑复制 spill 文件深度剖析:从 `xid-*.spill` 到 TPC-C 的增长方程
数据库🔥 845