-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

數據庫事務處理的藝術:事務管理與并發控制

( 簡體 字)
作者:李海翔 馮毅 范鵬程 著類別:1. -> 資料庫 -> 綜合
譯者:
出版社:機械工業出版社數據庫事務處理的藝術:事務管理與并發控制 3dWoo書號: 47860
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:10/1/2017
頁數:510
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111582359
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么寫這本書

關系數據庫管理系統有兩大核心技術,一是事務處理,二是查詢優化。對于數據庫技術從業者來說,如果能把這兩種技術珠聯璧合融于一體,則如同長出兩只翅膀,能助君振翅高飛、翱翔萬里。

2017年,筆者的第二本著述即將問世。本書是一本討論數據庫事務管理和并發控制技術的書,融合了事務管理和并發控制原理、主流數據庫的事務實現、開源數據庫內核事務處理和并發控制源碼剖析。本書能夠幫助技術愛好者掌握事務處理的核心技術—事務管理和并發訪問控制。

筆者期望,把自己對技術的深度探索以文字形式分享給讀者,與數據庫技術愛好者一起享受數據庫內核技術之美。于是工作之余,周末枯坐敲擊鍵盤,夜晚遐想苦思代碼,便有了這本小作。

什么是藝術

書名冠以藝術一詞,筆者實不敢當。藝術之大,筆者仰望如高山、如皓日。

惴惴之際,筆者試對藝術做一注解,謬誤之詞,請讀者見諒。

藝術,美也; 工程技術,美之實現也。數據庫的工程實現,有美其中。代碼有形之體美,算法有神之韻美,數據庫內核之大之復雜故有極深的邏輯之美。愛美之心,筆者如同萬千生靈,亦有之。于是因愛美而去嘗試展示數據庫之美,才有了筆者第一著述《數據庫查詢優化的藝術》和第二本著述《數據庫事務處理的藝術》。

本書的主要內容

本書主要討論的內容包含四個話題:

話題一:事務處理技術中的一致性和隔離性,即ACID技術中的C和I。

話題二:對于一致性,本書主要從事務模型和并發控制的角度出發進行討論,著手于原理怎樣保障正確性、主流數據庫怎樣實現各種并發控制技術等進行探討。比如封鎖控制技術等。

話題三:對于隔離性,本書以并發控制技術為出發點,在明確數據庫的一致性之后,從數據庫性能的角度出發討論數據庫隔離性的實現技術。比如著名的MVCC技術。

話題四:從工程實踐的角度,討論Informix、Oracle、PostgreSQL和MySQL是怎樣實現一致性和隔離性的。

本書共分四篇,四個話題貫穿始終,分別從原理(第一篇)、主流數據庫實現(第二篇)、源碼級實現(第三、四篇)這三個角度進行了深度討論。

其中,原理是靈魂,是統領工程實現的綱,對于事務處理,就是要確保怎樣保障數據的一致性。所以本書的第一篇,就從數據異常現象這個引子出發,對并發控制技術的原理進行講述,并分析了多種并發控制技術是怎樣解決數據異常現象的。這有別于經典的數據庫理論書籍,本書不單純為講理論而講原理,而是結合原理和工程實踐中的知識和關鍵點講原理,使得原理在工程實踐中有落腳點、有著力之處。這是第一篇內容的價值所在。

盡管原理相同,但是不同的數據庫的工程實現卻是不同的。所以在第二篇,筆者選取了主流的數據庫系統,包括Informix、Oracle、PostgreSQL和MySQL,對它們的一致性和隔離性的實現技術,以及工程實現的背后、折射的原理思想進行了深度探索、對比。以期幫助讀者對事務管理和并發控制技術的原理有進一步的認識,對主流數據庫的相關實現情況有全面的掌握,更期望讀者通過閱讀能把握主流數據庫基于相同原理卻又有著不同實現的在工程設計方面的不同考量之處。

最能幫助掌握核心技術的,只有源碼。本書第三篇揭示了PostgreSQL的事務處理的技術之美;第四篇揭示了MySQL和InnoDB的事務處理的技術之美。而全書中,似在不經意間,在山石小徑旁,長滿了對原理、對工程實現的比較,以展示美與美的不同。如果讀者能夠在讀書之際,自己再多做比較,則會領悟到更多的美……

本書的主要特色

從工程實踐的角度看,本書通過原理分析、實例分析、代碼分析,進行了三個對比:

理論對比:對比事務處理中各種并發控制技術等的異同,以擴展讀者對事務處理技術理解的深度。并發控制的技術有很多,本書不為單純講每一個技術而羅列算法本身的內容,而是著眼于對各種算法的差異進行對比,以揭示不同算法背后的思想。

實現對比:對比四大主流數據庫的事務處理技術的異同,以擴展讀者對事務處理技術理解的廣度。本書不單純講述各主流數據庫事務相關的SQL語法,而是著力于透視事務處理和并發控制技術實現的方式之背后的設計考慮點,并隨時對比各個主流數據庫對于同一個問題的不同實現方式,以展示工程技術之美。

源碼對比:依托代碼,直接分析,對比PostgreSQL和MySQL(InnoDB)的事務處理技術的異同,以幫助讀者能夠結合事務處理技術的原理和工程實踐,真正理解、掌握數據庫事務處理的技術。只有深入到代碼一層,才不會有霧里看花的感覺,置身于代碼里,能美在其中、樂在其中。

本書面向的主要讀者

您想深入了解數據庫技術?本書適合您。

您想深入掌握數據庫事務處理技術?本書適合您。

您想成為數據庫內核技術的開發者?本書適合您。

您想成為數據庫核心技術之美的欣賞者、品味者、把握者……本書確實適合您。
致謝

本書承蒙中國人民大學信息學院院長杜小勇教授指導并作序,心懷感激,念念在心。杜老師是筆者的恩師,析事明理、待人言物、治學嚴謹,一直是筆者心中的楷模。這是一種人格之美,至美而及筆者并影響了筆者寫書的風格。

在筆者的生命中,家人是最重要的。每每伏案疾書不舍晝夜,親人們都能夠理解包容,給了筆者強大的動力,讓筆者內心充滿暖意和歉意。特別是,近一年來,家中小果果生命的孕育,亦陪伴、激勵著筆者努力在小果果來到這個世界感受生命之美時,努力把這本書寫好、寫美。這里要特別感謝我的父母、妻子和果果,動力所在,唯愛有美。十年的果果,因愛而感受到生命的美。

再一次感謝為開源社區無私奉獻的人們,感謝經典的數據庫著述和論文的作者們,本書成書的過程中,參考了相關的資料和信息,書中也一一標注。在此,一并感謝這些無私的奉獻者們。沒有他們,本書會遜色很多。

感謝編輯楊福川先生和李藝女士為本書付出的努力和耗費的心血,書名源于楊先生,書稿樣式改于李女士。謝謝他們。

感謝每一位讀者,你們是筆者繼續前進的新動力。

寫完自己的第二本書,依舊慚愧本書尚不能達到書名標識的高度,依舊打算邁步從頭開始,依舊有著努力的心情,不一樣的是書籍內容,期待本書對讀者有所幫助。



李海翔
內容簡介:

目錄:

推薦序一

推薦序二

推薦序三

推薦序四

推薦序五

推薦序六

前言

第一篇 事務管理與并發控制基礎理論

第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
序: