数据库事务处理的艺术:事务管理与并发控制
作者:李海翔
出版时间:2017.10
内容简介
作者有近20年数据库内核研发经验,曾是Oracle公司MySQL全球开发组核心成员,现在是腾讯的T4级专家。数据库领域的泰斗杜小勇老师亲自为是本书作序,数据库学术界的知名学者张孝博士(中国人民大学)、卢卫博士后(中国人民大学)、彭煜玮博士(武汉大学),以及数据库工业界的知名专家盖国强和姜承尧等也给予了极高的评价。全书共12章,首先介绍数据库事务管理与并发控制的基础理论和工作机制,然后再从工程实践的角度对比和分析了4个主流数据库的事务管理与并发控制的实现原理,最后通过源代码分析了PostgreSQL和MySQL在事务管理与并发控制上的技术架构与设计思想。第一篇(第1章和第2章) 事务管理与并发控制基础理论对数据库事务管理和并发控制的基础理论、核心技术和工作原理进行了讲解,包括数据库事务处理技术的范围、数据的异常现象及成因、事务模型、并发访问控制技术、以及隔离性等。第二篇(第3~6章) 事务管理与并发控制应用实例研究以Informix、Oracle、PostgreSQL和MySQL/InnoDB等主流数据库系统为例,对他们的事务管理和并发控制的实现技术、工作原理以及原理背后的设计思想进行了深度分析和对比。第三篇(第7~9章) PostgreSQL事务管理与并发控制源码分析首先对PostgreSQL事务处理技术的架构、层次、设计思想、相关数据结构和实现原理进行了深入系统的分析,然后从功能角度对PostgreSQL的事务模型、并发控制、一致性、隔离性以及其所使用的SS2PL、MVCC、SSI等技术做了深入的讲解。第四篇(第10~12章) InnoDB事务管理与并发控制源码分析首先对MySQL/InnoDB事务处理技术的架构、层次、设计思想、相关数据结构和实现原理进行了深入系统的分析,然后从功能角度对MySQL/InnoDB的事务模型、并发控制、一致性、隔离性以及其所使用的SS2PL、MVCC等技术做了深入的讲解。
目录
推荐序一
推荐序二
推荐序三
推荐序四
推荐序五
推荐序六
前言
第一篇 事务管理与并发控制基础理论
第1章 数据库管理系统的事务原理 2
1.1 事务模型要解决的问题 2
1.1.1 为什么需要事务处理机制 2
1.1.2 事务机制要处理的问题——事务故障、系统故障、介质故障 4
1.1.3 并发带来的问题椚?
常见的读数据异常现象 4
1.1.4 并发带来的问题——写并发操作引发的数据异常现象 8
1.1.5 语义约束引发的数据异常现象 9
1.1.6 其他的异常 11
1.1.7 深入探讨三种读数据异常现象 13
1.2 事务处理技术的原理 17
1.2.1 什么是事务 17
1.2.2 事务的属性 20
1.2.3 ACID的实现技术 24
1.3 事务的模型 26
1.4 并发控制技术 27
1.4.1 并发控制技术的实现策略 27
1.4.2 并发控制技术的实现技术 28
1.5 日志技术与恢复子系统31
1.6 本章小结 32
第2章 深入理解事务管理和并发控制技术 33
2.1 在正确性和效率之间平衡 33
2.1.1 隔离级别 34
2.1.2 快照隔离 36
2.1.3 理解可见性 39
2.2 并发控制 40
2.2.1 基于锁的并发控制方法 42
2.2.2 基于时间戳的并发控制方法 47
2.2.3 基于有效性检查的并发控制方法 52
2.2.4 基于MVCC的并发控制方法 53
2.2.5 基于MVCC的可串行化快照隔离并发控制方法 56
2.2.6 再深入探讨三种读数据异常现象 60
2.3 并发控制技术的比较 62
2.3.1 并发控制技术整体比较 62
2.3.2 S2PL和SS2PL的比较 64
2.3.3 事务属性与并发控制技术的关系 65
2.3.4 SCO和SS2PL的比较 66
2.3.5 TO和SS2PL的比较 67
2.4 深入探讨隔离级别 68
2.4.1 隔离级别与基于锁的并发控制方法 68
2.4.2 隔离级别与各种并发控制技术 69
2.5 事务的管理 70
2.5.1 事务的开始 71
2.5.2 事务的提交 71
2.5.3 事务的中止与回滚 72
2.5.4 子事务与SAVEPOINT 72
2.5.5 长事务的管理 73
2.5.6 XA 74
2.6 事务相关的实战问题讨论 75
2.7 本章小结 76
第二篇 事务管理与并发控制应用实例研究
第3章 Informix事务管理与并发控制 78
3.1 Informix的事务操作 78
3.2 Informix的封锁技术 83
3.3 隔离级别与数据异常 85
3.4 本章小结 88
第4章 PostgreSQL事务管理与并发控制 89
4.1 PostgreSQL事务操作 89
4.2 SQL操作与锁 92
4.3 隔离级别与数据异常 108
4.4 本章小结 118
第5章 InnoDB事务管理与并发控制 119
5.1 InnoDB的事务模型 119
5.2 InnoDB基于锁的并发控制 123
5.3 InnoDB基于MVCC的并发控制 130
5.4 隔离级别与数据异常 131
5.5 本章小结 138
第6章 Oracle事务管理与并发控制 139
6.1 Oracle的事务操作 139
6.2 Oracle的封锁技术 142
6.3 MVCC技术 145
6.4 隔离级别与数据异常 157
6.5 本章小结 160
第三篇 PostgreSQL事务管理与并发控制源码分析
第7章 PostgreSQL事务系统的实现 162
7.1 架构概述 162
7.2 事务管理的基础 166
7.3 事务操作 173
7.4 子事务的管理 186
7.5 本章小结 188
第8章 PostgreSQL并发控制系统的实现—封锁 189
8.1 锁的概述 189
8.2 系统锁 192
8.3 事务锁 214
8.4 事务锁的管理 239
8.5 死锁检测 247
8.6 从锁的角度看用法 254
8.7 本章小结 262
第9章 PostgreSQL并发控制系统的实现—MVCC 263
9.1 快照 264
9.2 可见性判断与多版本 273
9.3 可串行化快照原理 285
9.4 PostgreSQL可串行化快照的实现 289
9.5 隔离级别 336
9.6 本章小结 340
第四篇 InnoDB事务管理与并发控制源码分析
第10章 InnoDB事务系统的实现 342
10.1 架构概述 342
10.2 事务管理的基础 346
10.3 事务操作 353
10.4 InnoDB事务模型 378
10.5 本章小结 382
第11章 InnoDB并发控制系统的实现—两阶段锁 383
11.1 锁的概述 383
11.2 系统锁 386
11.3 事务锁之记录锁 401
11.4 事务锁之元数据锁 433
11.5 SQL语义定义锁 476
11.6 其他类型的锁 493
11.7 事务与锁 499
11.8 本章小结 500
第12章 InnoDB并发控制系统的实现—MVCC 502
12.1 数据结构 503
12.2 可见性判断 506
12.3 多版本的实现 509
12.4 一致性读和半一致性读 511
12.5 本章小结 513
附录 TDSQL简介 514