《MySQL内核 InnoDB存储引擎 卷1》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:姜承尧,蒋鸿翔,饶珑辉,温正湖著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2014
  • ISBN:9787121229084
  • 页数:342 页
图书介绍:本书由资深MySQL专家亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,希望通过本书帮助用户真正了解一个数据库存储引擎的开发。

第1章 概览 1

1.1 InnoDB存储引擎历史 1

1.2 源码版本 2

1.3 源码风格 3

1.3.1 源码结构 3

1.3.2 代码风格 4

1.4 代码编译 4

1.5 阅读源码次序 5

1.6 思考题 6

1.7 继续阅读 6

第2章 基本数据结构与算法 7

2.1 相关文件 7

2.2 内存管理系统 8

2.2.1 内存管理 8

2.2.2 通用内存池 11

2.3 哈希表 14

2.3.1 哈希算法 14

2.3.2 数据结构 16

2.4 双链表 17

2.4.1 内存双链表 18

2.4.2 磁盘双链表 19

2.5 其他数据结构和算法 20

2.5.1 动态数组 21

2.5.2 排序 21

2.6 小结 22

2.7 思考题 22

2.8 继续阅读 22

第3章 同步机制 23

3.1 相关文件 23

3.2 基础知识 23

3.2.1 memory model 24

3.2.2 mutual exclution 25

3.2.3 Atomic Read-Modify-Write Operation 26

3.2.4 spin lock 27

3.2.5 死锁 29

3.3 InnoDB同步机制 30

3.3.1 mutex 30

3.3.2 rw-lock 34

3.3.3 wait array 36

3.3.4 死锁检测 38

3.4 小结 39

3.5 思考题 39

3.6 继续阅读 40

第4章 重做日志 41

4.1 相关文件 41

4.2 相关概念 41

4.2.1 简介 41

4.2.2 物理逻辑日志 45

4.2.3 LSN 45

4.2.4 检查点 47

4.2.5 归档日志 48

4.2.6 恢复 49

4.3 物理存储结构 49

4.3.1 重做日志物理架构 49

4.3.2 重做日志块 51

4.3.3 重做日志组与文件 53

4.4 相关数据结构 55

4.4.1 log_group_struct 55

4.4.2 log struct 56

4.5 组提交 60

4.6 恢复 61

4.6.1 数据结构 61

4.6.2 重做日志恢复 62

4.7 总结 66

4.8 思考题 66

4.9 继续阅读 66

第5章 mini-transaction 67

5.1 相关文件 67

5.2 mini-transaction介绍 67

5.2.1 基本概念 67

5.2.2 The FIX Rules 68

5.2.3 Write-Ahead Log(WAL) 69

5.2.4 Force-log-at-commit 69

5.3 具体实现 70

5.3.1 数据结构 70

5.3.2 物理逻辑日志的实现 71

5.3.3 mini-transaction的使用 72

5.4 示例 73

5.5 小结 76

5.6 思考题 76

5.7 继续阅读 76

第6章 存储管理 77

6.1 相关文件 77

6.2 物理存储 77

6.2.1 页 78

6.2.2 区 79

6.2.3 段 82

6.2.4 表空间 84

6.3 数据结构 86

6.3.1 概述 86

6.3.2 fil_system_struct 86

6.3.3 fil_space_struct 87

6.3.4 fil_node_struct 88

6.4 异步I/O 91

6.4.1 异步I/O数据结构 91

6.4.2 异步I/O线程 94

6.5 总结 95

6.6 思考题 95

6.7 继续阅读 95

第7章 记录 97

7.1 相关文件 97

7.2 概述 98

7.3 物理记录 99

7.3.1 物理记录格式 99

7.3.2 大记录格式 103

7.3.3 伪记录 106

7.4 逻辑记录 107

7.5 记录之间的比较 108

7.6 行记录版本 111

7.7 小结 115

7.8 思考题 115

7.9 继续阅读 115

第8章 索引页 117

8.1 相关文件 117

8.2 页 117

8.3 存储结构 118

8.3.1 Page Header 118

8.3.2 Page Directory 121

8.3.3 示例 122

8.4 Page Cursor 125

8.4.1 定位记录 125

8.4.2 插入记录 127

8.4.3 删除记录 130

8.4.4 并发控制 130

8.5 小结 131

8.6 思考题 131

8.7 继续阅读 131

第9章 锁 133

9.1 相关文件 133

9.2 锁与事务 133

9.2.1 隔离性 133

9.2.2 事务的隔离级别 135

9.2.3 幻读 136

9.3 InnoDB存储引擎中锁的类型与算法 137

9.4 锁的内部实现 139

9.4.1 数据结构 139

9.4.2 锁的并发控制 143

9.4.3 锁的类型与模式 143

9.4.4 锁的兼容性 144

9.5 显式锁和隐式锁 145

9.5.1 显式锁与隐式锁的区别 145

9.5.2 聚集索引记录的隐式锁 146

9.5.3 辅助索引记录的隐式锁 146

9.6 加锁操作 152

9.6.1 加锁流程 152

9.6.2 加锁过程 154

9.7 行锁的维护 154

9.7.1 插入 154

9.7.2 更新 155

9.7.3 PURGE 156

9.7.4 一致性的锁定读 158

9.7.5 页的分裂 159

9.7.6 页的合并 162

9.8 自增锁 164

9.9 死锁 165

9.9.1 死锁的概念 165

9.9.2 死锁概率 167

9.9.3 死锁的示例 168

9.10 小结 170

9.11 思考题 171

9.12 继续阅读 171

第10章 B+树索引 173

10.1 B+树 173

10.1.1 概述 173

10.1.2 插入 176

10.1.3 删除 179

10.2 B+树索引 180

10.2.1 索引的特点 180

10.2.2 聚集索引 181

10.2.3 辅助索引 185

10.2.4 填充因子 190

10.3 InnoDB存储引擎B+树索引的实现 191

10.3.1 数据结构 191

10.3.2 相关latch 192

10.3.3 整理 192

10.3.4 分裂 192

10.3.5 合并 200

10.4 查找 201

10.4.1 mode 201

10.4.2 latch_mode 204

10.4.3 cursor 205

10.5 DML操作 207

10.5.1 插入 207

10.5.2 非主键更新 210

10.5.3 主键更新 215

10.5.4 删除 216

10.6 持久游标 219

10.7 自适应哈希索引 221

10.7.1 实现原理 221

10.7.2 创建哈希索引 225

10.7.3 哈希索引的维护 226

10.7.4 自适应哈希索引的优缺点 227

10.8 小结 227

10.9 思考题 228

10.10 继续阅读 228

第11章 Insert Buffer 229

11.1 相关文件 229

11.2 基本概念 229

11.3 架构实现 231

11.3.1 存储结构 231

11.3.2 逻辑控制 233

11.3.3 示例 234

11.4 相关数据结构 236

11.5 死锁 237

11.5.1 latch顺序 237

11.5.2 并发控制 239

11.5.3 异步I/O线程 240

11.6 维护 241

11.6.1 记录合并 241

11.6.2 空间收缩 242

11.7 小结 243

11.8 思考题 244

11.9 继续阅读 244

第12章 缓冲池 245

12.1 相关文件 245

12.2 概述 246

12.2.1 缓冲池 246

12.2.2 LRU、Free和Flush链表 249

12.2.3 基本数据结构 251

12.3 缓冲池的管理 255

12.3.1 LRU算法 255

12.3.2 LRU链表维护 255

12.3.3 页的分配 256

12.4 页的读取 257

12.4.1 物理读取 257

12.4.2 随机预读 258

12.4.3 线性预读 259

12.4.4 逻辑读取 262

12.5 页的刷新 264

12.5.1 检查点 264

12.5.2 部分写的问题 266

12.5.3 刷新的实现 267

12.6 小结 269

12.7 思考题 269

12.8 继续阅读 270

第13章 事务处理 271

13.1 相关文件 271

13.2 事务 272

13.2.1 概述 272

13.2.2 分类 274

13.2.1 隔离级别 275

13.3 事务系统结构 275

13.3.1 事务系统段 275

13.3.2 数据结构 277

13.4 doublewrite段 280

13.5 undo日志存储 281

13.5.1 简介 281

13.5.2 实现结构 283

13.5.3 回滚段 283

13.5.4 undo段 284

13.6 undo记录 288

13.6.1 存储结构 288

13.6.2 insert undo log record 290

13.6.3 update undo log record 292

13.7 purge 299

13.7.1 清理操作 299

13.7.2 实现原理 300

13.8 rollback 303

13.8.1 回滚指针 303

13.8.2 回滚操作 303

13.9 commit 306

13.10 kernel_mutex与并发控制 308

13.11 小结 309

13.12 思考题 309

13.13 继续阅读 309

第14章 数据字典 311

14.1 相关文件 311

14.2 数据字典概述 312

14.3 主要数据对象 312

14.3.1 数据字典系统 312

14.3.2 表定义 314

14.3.3 索引定义 316

14.3.4 外键约束定义 317

14.3.5 其他数据对象定义 319

14.4 InnoDB系统表对象 319

14.4.1 SYS_TABLES 319

14.4.2 SYS_COLUMNS 320

14.4.3 SYS_INDEXES 321

14.4.4 SYS_FIELDS 322

14.4.5 其他表对象 322

14.5 数据字典创建 323

14.5.1 数据字典段 324

14.5.2 数据字典物理结构 324

14.5.3 数据字典初始化 325

14.5.4 数据字典缓存组织 326

14.6 数据字典对象加载 327

14.6.1 用户表加载 327

14.6.2 用户索引和外键约束加载 328

14.7 小结 329

14.8 思考题 329

14.9 继续阅读 329

第15章 服务管理 331

15.1 相关文件 331

15.2 初始化InnoDB存储引擎 331

15.2.1 相关重要参数 333

15.2.2 服务管理相关数据结构 333

15.2.3 文件创建和加载 335

15.2.4 启动后台线程 337

15.3 关闭InnoDB存储引擎 337

15.3.1 数据持久化 338

15.3.2 资源释放 338

15.4 master线程 339

15.4.1 主要功能 339

15.4.2 数据刷盘策略 339

15.5 锁超时监控线程 341

15.6 思考题 342

15.7 继续阅读 342