目录
●本书赞誉
推荐序一
推荐序二
推荐序三
推荐序四
推荐序五
前言
第1章 MySQL内核简介 1
1.1 MySQL 内核历史 1
1.2 MySQL 内核衍生 2
1.3 MySQL 内核版本 3
1.4 MySQL内核社区 4
1.5 开始编译MySQL 4
1.5.1 下载MySQL源码包 4
1.5.2 编译MySQL 9
1.5.3 使用IDE进行调试 12
1.5.4 调试技巧 19
1.6 总结 26
第2章 MySQL内核整体架构 27
2.1 Server层 28
2.1.1 连接层 28
2.1.2 查询优化 30
2.1.3 参数、状态、performance_schema 31
2.1.4 缓存 31
2.1.5 日志 32
2.1.6 锁 33
2.1.7 存储过程相关 33
2.1.8 用户自定义函数 34
2.1.9 复制层 34
2.1.10 API层 34
2.2 存储引擎层 35
2.2.1 缓冲池 36
2.2.2 重做日志缓冲区 37
2.2.3 双写机制 37
2.2.4 后台线程 37
2.3 文件层 39
2.4 MySQL启动流程 40
2.4.1 第一阶段 41
2.4.2 第二阶段 43
2.4.3 第三阶段 50
2.5 总结 52
第3章 客户端和服务端交互协议 53
3.1 MySQL的连接方式 53
3.1.1 TCP/IP套接字 53
3.1.2 UNIX域套接字 54
3.1.3 命名管道和共享内存 55
3.2 交互过程 55
3.2.1 MySQL通信协议 56
3.2.2 连接阶段 58
3.2.3 命令执行阶段 61
3.3 处理连接与创建线程 65
3.3.1 MySQL监听客户端请求 66
3.3.2 创建连接线程 67
3.3.3 THD类 69
3.4 总结 71
第4章 数据字典 72
4.1 数据字典简介 72
4.1.1 文件层 74
4.1.2 InnoDB存储引擎层 79
4.1.3 MySQL Server层 83
4.2 .frm文件 89
4.3 数据字典的使用 93
4.3.1 创建表 93
4.3.2 查询表 95
4.3.3 rowid 96
4.4 MySQL 8.0 数据字典 97
4.4.1 文件存储层 99
4.4.2 数据字典缓存 103
4.4.3 数据字典的使用 110
4.4.4 SDI 115
4.4.5 原子DDL 121
4.5 总结 124
第5章 InnoDB存储引擎 125
5.1 整体架构 125
5.2 缓冲池 126
5.2.1 总体架构 126
5.2.2 缓冲池初始化 128
5.2.3 缓存及淘汰 130
5.2.4 相关参数 131
5.3 插入缓冲区 132
5.3.1 插入缓冲的流程 132
5.3.2 相关参数 136
5.4 自适应哈希 136
5.4.1 使用自适应哈希查询 140
5.4.2 自适应哈希索引的维护 140
5.5 重做日志缓冲区 140
5.5.1 整体架构 141
5.5.2 管理结构 142
5.5.3 更新语句的流程 143
5.5.4 重做日志刷盘 145
5.6 双写机制 146
5.6.1 双写缓冲区管理 147
5.6.2 数据的可靠性保证 149
5.7 后台线程 149
5.7.1 master线程 150
5.7.2 I/O线程 151
5.7.3 刷脏线程 153
5.7.4 清理线程 154
5.8 总结 156
第6章 InnoDB文件组织 157
6.1 数据文件 157
6.1.1 逻辑组织结构概览 157
6.1.2 逻辑组织结构管理 160
6.1.3 物理组织结构 167
6.1.4 数据文件的更新操作 177
6.2 重做日志文件 181
6.2.1 总体架构 181
6.2.2 更新操作的重做日志 186
6.3 回滚日志文件 189
6.3.1 总体架构 189
6.3.2 回滚日志的管理 192
6.3.3 更新操作的回滚日志 195
6.4 总结 196
第7章 InnoDB索引的实现 197
7.1 索引简介 197
7.1.1 B树和B+树 198
7.1.2 全文索引 199
7.2 索引的结构 200
7.2.1 聚簇索引的结构 200
7.2.2 二级索引的结构 202
7.2.3 复合索引的结构 203
7.3 索引的管理 204
7.3.1 索引在内存中的管理 204
7.3.2 索引的加载 205
7.3.3 索引的创建 206
7.4 数据检索 209
7.4.1 聚簇索引数据检索 209
7.4.2 二级索引数据检索 209
7.4.3 插入数据 209
7.4.4 删除数据 210
7.4.5 更新数据 210
7.5 索引分裂和合并 211
7.5.1 索引页分裂 211
7.5.2 索引页合并 213
7.5.3 索引页重组 215
7.6 总结 215
第8章 MySQL并发控制 216
8.1 MySQL事务的实现 216
8.1.1 事务的管理 216
8.1.2 事务的执行流程 218
8.1.3 事务的ACID实现 220
8.1.4 MVCC 229
8.1.5 崩溃恢复流程 231
8.1.6 组提交 237
8.1.7 分布式事务 238
8.2 MySQL锁实现 242
8.2.1 简介 242
8.2.2 元数据锁 247
8.2.3 表锁 254
8.2.4 InnoDB行锁 261
8.2.5 InnoDB表锁 269
8.2.6 互斥锁 272
8.2.7 读写锁 275
8.2.8 锁升级和锁降级 279
8.2.9 死锁 281
8.3 总结 283
第9章 MySQL高可用实现 284
9.1 MySQL主从复制 284
9.1.1 数据同步流程 285
9.1.2 binlog日志详解 290
9.1.3 半同步复制 294
9.1.4 并行复制 296
9.2 组复制 303
9.2.1 总体架构 303
9.2.2 数据流 307
9.2.3 MGR Paxos协议优化 325
9.2.4 MGR冲突检测 328
9.2.5 MGR流控 330
9.3 总结 331
内容介绍
本书是资深数据库专家结合其十余年一线实战经验与源码研究倾力打造的MySQL内核权威指南,全景式解构MySQL 5.7及MySQL 8.0内核设计精髓。作者采用基于SQL执行流的独特分析范式,通过一条查询语句的生命周期,串联起协议解析、数据字典、InnoDB存储引擎、并发控制等核心模块,揭秘缓冲池、双写缓冲区、自适应哈希索引的协同机制,以及B+树索引的物理操作细节。无论是希望突破技术瓶颈的DBA、追求卓越性能的互联网架构师,还是数据库内核开发者,本书都将为你提供从启动流程到高可用架构(含MGR集群)的完整知识图谱,通过源码调试与物理操作剖析,打通从原理认知到性能调优的实践链路。
本书具体内容如下:第1章详细阐述MySQL内核的发展历程,并指导读者如何下载MySQL源码包以及搭建调试环境;第2章系统介绍MySQL的总体架构;第3章探讨客户端与服务端之间的协议;第4章分析数据字典的结构;第5章详......