描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111582359
(1)作者是腾讯的T4级专家,有近20年数据库内核研发经验,曾是Oracle公司MySQL全球开发组核心成员
(2)中国计算机学会(CCF)常务理事、数据库专委会主任、数据库领域著名专家、中国人民大学杜小勇教授亲自作序推荐
(3)人民大学张孝和卢卫教授、武汉大学彭煜炜教授、云和恩墨CEO盖国强、腾讯金融支付数据库运营与研发部副总监姜承尧联袂推荐
作者有近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 子事务与SAVEPOINT72
2.5.5 长事务的管理73
2.5.6 XA74
2.6 事务相关的实战问题讨论75
2.7 本章小结76
第二篇 事务管理与并发控制应用实例研究
第3章 Informix事务管理与并发控制78
3.1 Informix的事务操作78
3.1.1 开始事务78
3.1.2 提交事务79
3.1.3 回滚事务80
3.1.4 XA事务80
3.1.5 事务模型82
3.2 Informix的封锁技术83
3.2.1 锁的级别83
3.2.2 锁的粒度84
3.3 隔离级别与数据异常85
3.3.1 Informix支持的隔离级别85
3.3.2 隔离级别与日志的模式86
3.3.3 写偏序异常87
3.4 本章小结88
第4章 PostgreSQL事务管理与并发控制89
4.1 PostgreSQL事务操作89
4.1.1 开始事务90
4.1.2 提交事务90
4.1.3 回滚事务90
4.1.4 XA事务 91
4.1.5 自动控制事务91
4.2 SQL操作与锁92
4.2.1 锁的研究准备92
4.2.2 INSERT操作触发的锁94
4.2.3 SELECT操作触发的锁94
4.2.4 SELECT FOR UPDATE操作触发的锁97
4.2.5 UPDATE操作触发的锁100
4.2.6 DELETE操作触发的锁103
4.2.7 ANALYZE操作触发的锁106
4.2.8 CREATE INDEX操作触发的锁106
4.2.9 CREATE TRIGGER操作触发的锁107
4.2.10 锁的相关参数108
4.3 隔离级别与数据异常108
4.3.1 SQL标准定义的三种读异常108
4.3.2 写偏序异常115
4.4 本章小结118
第5章 InnoDB事务管理与并发控制119
5.1 InnoDB的事务模型119
5.1.1 开始事务120
5.1.2 提交事务与回滚事务121
5.1.3 MySQL的XA122
5.2 InnoDB基于锁的并发控制123
5.2.1 基于封锁技术实现基本的并发控制123
5.2.2 锁的种类124
5.2.3 锁的施加规则127
5.2.4 获取InnoDB行锁争用情况129
5.2.5 死锁129
5.3 InnoDB基于MVCC的并发控制130
5.4 隔离级别与数据异常131
5.4.1 SQL标准定义的三种读异常131
5.4.2 写偏序异常134
5.5 本章小结138
第6章 Oracle事务管理与并发控制139
6.1 Oracle的事务操作139
6.1.1 事务管理139
6.1.2 事务属性和隔离级别140
6.1.3 XA事务141
6.2 Oracle的封锁技术142
6.2.1 元数据锁的级别142
6.2.2 用户数据锁的级别143
6.3 MVCC技术145
6.3.1 MVCC的历史145
6.3.2 深入理解MVCC 147
6.3.3 Oracle的MVCC149
6.4 隔离级别与数据异常157
6.4.1 Oracle支持的隔离级别157
6.4.2 写偏序异常158
6.5 本章小结160
第三篇 PostgreSQL事务管理与并发控制源码分析
第7章 PostgreSQL事务系统的实现162
7.1 架构概述162
7.1.1 事务和并发控制相关的文件162
7.1.2 事务相关的整体架构164
7.2 事务管理的基础166
7.2.1 事务状态166
7.2.2 事务体171
7.2.3 事务运行的简略过程172
7.3 事务操作173
7.3.1 开始事务173
7.3.2 事务提交177
7.3.3 日志落盘179
7.3.4 事务回滚180
7.3.5 clog185
7.4 子事务的管理186
7.4.1 子事务与父事务的区别186
7.4.2 保存点187
7.5 本章小结188
第8章 PostgreSQL并发控制系统的实现—封锁189
8.1 锁的概述189
8.1.1 锁操作的本质189
8.1.2 与锁相关的文件190
8.1.3 与锁相关的内存初始化191
8.2 系统锁192
8.2.1 SpinLock192
8.2.2 LWLock198
8.2.3 SpinLock与LWLock比较213
8.3 事
2017年,笔者的第二本著述即将问世。本书是一本讨论数据库事务管理和并发控制技术的书,融合了事务管理和并发控制原理、主流数据库的事务实现、开源数据库内核事务处理和并发控制源码剖析。本书能够帮助技术爱好者掌握事务处理的核心技术—事务管理和并发访问控制。
笔者期望,把自己对技术的深度探索以文字形式分享给读者,与数据库技术爱好者一起享受数据库内核技术之美。于是工作之余,周末枯坐敲击键盘,夜晚遐想苦思代码,便有了这本小作。
什么是艺术书名冠以艺术一词,笔者实不敢当。艺术之大,笔者仰望如高山、如皓日。
惴惴之际,笔者试对艺术做一注解,谬误之词,请读者见谅。
艺术,美也; 工程技术,美之实现也。数据库的工程实现,有美其中。代码有形之体美,算法有神之韵美,数据库内核之大之复杂故有极深的逻辑之美。爱美之心,笔者如同万千生灵,亦有之。于是因爱美而去尝试展示数据库之美,才有了笔者著述《数据库查询优化的艺术》和第二本著述《数据库事务处理的艺术》。
本书的主要内容本书主要讨论的内容包含四个话题:
话题一:事务处理技术中的一致性和隔离性,即ACID技术中的C和I。
话题二:对于一致性,本书主要从事务模型和并发控制的角度出发进行讨论,着手于原理怎样保障正确性、主流数据库怎样实现各种并发控制技术等进行探讨。比如封锁控制技术等。
话题三:对于隔离性,本书以并发控制技术为出发点,在明确数据库的一致性之后,从数据库性能的角度出发讨论数据库隔离性的实现技术。比如著名的MVCC技术。
话题四:从工程实践的角度,讨论Informix、Oracle、PostgreSQL和MySQL是怎样实现一致性和隔离性的。
本书共分四篇,四个话题贯穿始终,分别从原理(篇)、主流数据库实现(第二篇)、源码级实现(第三、四篇)这三个角度进行了深度讨论。
其中,原理是灵魂,是统领工程实现的纲,对于事务处理,就是要确保怎样保障数据的一致性。所以本书的篇,就从数据异常现象这个引子出发,对并发控制技术的原理进行讲述,并分析了多种并发控制技术是怎样解决数据异常现象的。这有别于经典的数据库理论书籍,本书不单纯为讲理论而讲原理,而是结合原理和工程实践中的知识和关键点讲原理,使得原理在工程实践中有落脚点、有着力之处。这是篇内容的价值所在。
尽管原理相同,但是不同的数据库的工程实现却是不同的。所以在第二篇,笔者选取了主流的数据库系统,包括Informix、Oracle、PostgreSQL和MySQL,对它们的一致性和隔离性的实现技术,以及工程实现的背后、折射的原理思想进行了深度探索、对比。以期帮助读者对事务管理和并发控制技术的原理有进一步的认识,对主流数据库的相关实现情况有全面的掌握,更期望读者通过阅读能把握主流数据库基于相同原理却又有着不同实现的在工程设计方面的不同考量之处。
能帮助掌握核心技术的,只有源码。本书第三篇揭示了PostgreSQL的事务处理的技术之美;第四篇揭示了MySQL和InnoDB的事务处理的技术之美。而全书中,似在不经意间,在山石小径旁,长满了对原理、对工程实现的比较,以展示美与美的不同。如果读者能够在读书之际,自己再多做比较,则会领悟到更多的美……本书的主要特色从工程实践的角度看,本书通过原理分析、实例分析、代码分析,进行了三个对比:
理论对比:对比事务处理中各种并发控制技术等的异同,以扩展读者对事务处理技术理解的深度。并发控制的技术有很多,本书不为单纯讲每一个技术而罗列算法本身的内容,而是着眼于对各种算法的差异进行对比,以揭示不同算法背后的思想。
实现对比:对比四大主流数据库的事务处理技术的异同,以扩展读者对事务处理技术理解的广度。本书不单纯讲述各主流数据库事务相关的SQL语法,而是着力于透视事务处理和并发控制技术实现的方式之背后的设计考虑点,并随时对比各个主流数据库对于同一个问题的不同实现方式,以展示工程技术之美。
源码对比:依托代码,直接分析,对比PostgreSQL和MySQL(InnoDB)的事务处理技术的异同,以帮助读者能够结合事务处理技术的原理和工程实践,真正理解、掌握数据库事务处理的技术。只有深入到代码一层,才不会有雾里看花的感觉,置身于代码里,能美在其中、乐在其中。
本书面向的主要读者您想深入了解数据库技术?本书适合您。
您想深入掌握数据库事务处理技术?本书适合您。
您想成为数据库内核技术的开发者?本书适合您。
您想成为数据库核心技术之美的欣赏者、品味者、把握者……本书确实适合您。
资源及勘误由于笔者的水平有限,书中难免会有笔误、差错或遗漏等,希望广大读者能把发现的错误反馈给笔者,笔者将不胜感谢。本书的进步和完善,有您的帮助和爱护,定能再上层楼。您可以发送电子邮件到:databas
海翔热爱数据库研发,对数据库技术一直抱有一颗坚韧、执着之心,本书是他的经验和思索的体现,值得仔细研读。
——张孝(博士) 中国人民大学信息学院副教授
这本书具备较好的深度、广度、新度,这让我十分期待。
——卢卫(博士后) 中国人民大学信息学院副教授
本书聚焦于数据库中的事务处理,从原理、主流数据库实现、源码级实现三个角度进行了深度的探讨。尤其是后两个部分的介绍,让本书成为不可多得的有关于DBMS事务管理模块内部技术细节的参考资料。
——彭煜玮(博士) 武汉大学计算机学院副教授
海翔的著作以独到之角度阐释事务原理与并发控制,以庖丁解牛之刀为广大数据技术从业者剖析出宝贵的关节,实在是让人手不释卷。
——盖国强 云和恩墨创始人/Oracle ACE总监
学习MySQL看姜老师的书,学习优化器和事务处理,就看海翔老师的作品吧。
——姜承尧 腾讯金融支付数据库运营与研发部副总监
作者在数据库内核领域有多年理论研究与开发实践经验,目前负责腾讯金融分布式数据库TDSQL的内核研发工作。TDSQL旨在解决强一致性、高可用、高性能、分布式、配套设施、安全保障等方面的难题,为腾讯内外大量政企、金融客户的稳定运行保驾护航。
评论
还没有评论。