目錄
推薦序一
推薦序二
推薦序三
推薦序四
推薦序五
推薦序六
前言
第一篇 事務管理與並發控製基礎理論
第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.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的XA 122
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的MVCC 149
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 clog 185
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 SpinLock 192
8.2.2 LWLock 198
8.2.3 SpinLock與LWLock比較 213
8.3 事務鎖 214
8.3.1 鎖的基本信息 214
8.3.2 ReguarLock 221
8.3.3 行級鎖 232
8.3.4 Advisory lock(勸告鎖) 237
8.4 事務鎖的管理 239
8.4.1 獲取鎖 239
8.4.2 鎖查找或創建 242
8.4.3 釋放鎖 243
8.4.4 鎖衝突檢測 244
8.5 死鎖檢測 247
8.5.1 數據結構 247
8.5.2 等待獲取鎖與死鎖處理 248
8.5.3 死鎖檢測 251
8.5.4 進程喚醒 252
8.6 從鎖的角度看用法 254
8.6.1 AccessShareLock 254
8.6.2 RowShareLock 256
8.6.3 RowExclusiveLock 257
8.6.4 ExclusiveLock 258
8.6.5 其他的鎖 260
8.7 本章小結 262
第9章 PostgreSQL並發控製係統的實現—MVCC 263
9.1 快照 264
9.1.1 相關文件 264
9.1.2 數據結構 265
9.1.3 快照的類型 268
9.1.4 快照的管理 268
9.1.5 可串行化隔離級彆的快照 271
9.2 可見性判斷與多版本 273
9.2.1 可見性判斷 273
9.2.2 多版本實現 282
9.3 可串行化快照原理 285
9.3.1 理論基礎 285
9.3.2 算法實現 287
9.4 PostgreSQL可串行化快照的實現 289
9.4.1 PostgreSQL的狀況 289
9.4.2 PostgreSQL實現SSI的理論基礎 289
9.4.3 謂詞鎖數據結構 297
9.4.4 謂詞鎖操作 306
9.4.5 衝突檢測 321
9.5 隔離級彆 336
9.5.1 隔離級彆 336
9.5.2 各種隔離級彆的實現 337
9.6 本章小結 340
第四篇 InnoDB事務管理與並發控製源碼分析
第10章 InnoDB事務係統的實現 342
10.1 架構概述 342
10.1.1 事務和並發控製相關的文件 342
10.1.2 事務相關的整體架構 344
10.2 事務管理的基礎 346
10.2.1 事務狀態 346
10.2.2 錶示事務的數據結構 348
10.2.3 UNDO日誌與迴滾 349
10.2.4 REDO日誌 350
10.2.5 內部事務的處理 352
10.2.6 Mini-Transaction 352
10.3 事務操作 353
10.3.1 InnoDB的初始化 354
10.3.2 開始事務 354
10.3.3 提交事務 359
10.3.4 日誌落盤 364
10.3.5 迴滾事務 367
10.3.6 Mini-Transaction的提交 371
10.3.7 Mini-Transaction的迴滾 373
10.3.8 SAVEPOINT 373
10.3.9 XA 375
10.3.10 事務的其他內容 375
10.4 InnoDB事務模型 378
10.5 本章小結 382
第11章 InnoDB並發控製係統的實現—兩階段鎖 383
11.1 鎖的概述 383
11.1.1 鎖操作的本質 383
11.1.2 全局鎖錶 384
11.1.3 封鎖係統的架構 384
11.2 係統鎖 386
11.2.1 讀寫鎖 386
11.2.2 Mutex鎖 394
11.2.3 其他鎖 401
11.3 事務鎖之記錄鎖 401
11.3.1 記錄鎖的基本數據結構 402
11.3.2 記錄鎖 408
11.3.3 記錄鎖與隔離級彆 423
11.4 事務鎖之元數據鎖 433
11.4.1 元數據鎖的數據結構 433
11.4.2 元數據鎖的管理與使用 450
11.4.3 死鎖處理 468
11.5 SQL語義定義鎖 476
11.5.1 鎖的粒度 476
11.5.2 重要的數據結構 478
11.5.3 InnoDB對接MySQL Server 480
11.6 其他類型的鎖 493
11.6.1 Mini-Transaction加鎖 493
11.6.2 事務鎖之謂詞鎖 494
11.7 事務與鎖 499
11.8 本章小結 500
第12章 InnoDB並發控製係統的實現—MVCC 502
12.1 數據結構 503
12.1.1 MVCC 503
12.1.2 Read View快照 504
12.1.3 事務與快照 505
12.2 可見性判斷 506
12.2.1 可見性原則 506
12.2.2 二級索引的可見性 509
12.3 多版本的實現 509
12.3.1 多版本結構 509
12.3.2 多版本生成 510
12.3.3 多版本查找 510
12.3.4 多版本清理 511
12.4 一緻性讀和半一緻性讀 511
12.4.1 一緻性讀 512
12.4.2 半一緻性讀 512
12.5 本章小結 513
附錄 TDSQL簡介 514
· · · · · · (
收起)