内容简介
事务是关系型数据库实现的核心内容,它具有原子、一致、隔离和持久等特点,是数据库实现并发控制和故障恢复的基础。 本书首先分析了PostgreSQL数据库事务的实现机制括事务的基本概念、两阶段锁的原理及实现方法、多版本并发控制的原理及实现方法、故障恢复的实现方法等,然后通过介绍物理、逻辑、Zheap引擎的原理及实现、SSI的实现、两阶段提交的原理及实现,使读者获得了对事务更深入的理解,从而使读者既能了解事务的原理,也能清楚事务的实现细节。 本书适合数据库内核开发及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。
目录
第 1 章 事务概述 11.1 事务的作用 11.2 事务的质 21.3 事务的隔离级别 41.4 PostgreSQL 中的事务 71.5 事务处理流程 201.5.1 事务 ID 20 1.5.2 pg_trans 日志 25 1.5.3 启动事务 26 1.5.4 事务结束 28 1.6 异步提交 331.7 本章小结 35第 2 章 锁 36 2.1 并发的异常现象 362.2 调度 392.3 并发控制 412.4 两阶段锁 422.5 PostgreSQL 中的锁432.5.1 自旋锁 45 2.5.2 轻量锁 50 2.5.3 常规锁 56 2.6 常规锁的内存结构 582.7 常规锁的加锁 612.8 行锁 732.9 死锁检测 842.10 本章小结 92第 3 章 MVCC 93 3.1 元组上的版本信息 943.2 快照 1003.3 获得快照 1033.4 可见判断 1093.5 本章小结 113第 4 章 故障恢复 114 4.1 故障的分类 1144.2 事务日志 1154.3 日志文件 1164.4 查看日志内容 1174.5 日志格式 1204.6 XLog 初始化 1244.7 日志的注册 1274.8 日志的组成 1314.9 日志的写入 1374.10 控制文件 1404.11 Full Page Write 1404.12 检查点 1424.12.1 检查点的触发 144 4.12.2 BgWriter 刷入脏页 148 4.12.3 回写机制 152 4.12.4 Sync 请求 154 4.12.5 检查点的创建 155 4.12.6 检查点中脏页的刷入 157 4.12.7 检查点中的 XLog 清理 159 4.13 日志归档 1624.14 基础备份 1684.15 PITR 1724.16 故障恢复 1774.17 本章小结 186第 5 章 物理 187 5.1 环境搭建 1875.2 物理 1895.3 同步 1955.4 Hot Standby 2035.5 物理槽 2125.6 本章小结 215第 6 章 逻辑解码与逻辑 216 6.1 槽 2176.2 逻辑解码 2216.2.1 Snapshot Builder 222 6.2.2 Reorder Buffer 237 6.2.3 Logical Decoding 242 6.2.4 Replication Origin 247 6.3 逻辑 2506.3.1 发布与订阅 251 6.3.2 的起点 254 6.4 本章小结 257第 7 章 SSI 258 7.1 SSI 介绍 2587.1.1 依赖关系 259 7.1.2 S2PL 和 SSI 259 7.1.3 MVCC 和 SSI 261 7.1.4 SSI 方法 262 7.2 “危险结构” 2667.3 SSI 的优化方法 2697.4 SSI 的实现方法 2717.5 本章小结 299第 8 章 Zheap 引擎 300 8.1 事务槽 3018.2 TPD 3068.3 元组的变化 3108.4 Undo 日志 3108.4.1 Undo 的文件结构 311 8.4.2 Undo 的内存结构 314 8.4.3 Undo 的页面结构 316 8.5 事务槽的使用 3178.6 可见判断 3238.7 Undo 操作 3278.8 Undo 日志清理 3298.9 本章小结 334第 9 章 两阶段提交 335 9.1 两阶段提交简介 3369.2 PostgreSQL 中的 2PC 3379.3 本章小结 342附录 A 存储引擎概述 343 A.1 存储文件形式 343A.2 缓冲区 345A.3 SLRU 347附录 B 事务的文件结构 352 B.1 access 目录 352 B.2 storage 目录353B.3 replication 目录 353B.4 utils 目录 354