《資料庫事務處理的藝術:事務管理與並發控制》是2017年10月機械工業出版社出版的圖書,作者是李海翔、馮毅、范鵬程。
基本介紹
- 書名:資料庫事務處理的藝術:事務管理與並發控制
- 作者:李海翔 馮毅 范鵬程
- ISBN:9787111582359
- 定價:99.00
- 出版社:機械工業出版社
- 出版時間:2017-10
- 開本:16開
- 版次:1
編輯推薦
內容簡介
作者簡介
圖書目錄
推薦序二
推薦序三
推薦序四
推薦序五
推薦序六
前言
第一篇 事務管理與並發控制基礎理論
第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