PostgreSQL指南:內幕探索

PostgreSQL指南:內幕探索

《PostgreSQL指南:內幕探索》,作者:【日】鈴木啟修 ,2019年6月電子工業出版社出版,本書全面詮釋了 PostgreSQL 資料庫系統的整體架構及各個模組!

基本介紹

  • 書名:PostgreSQL指南:內幕探索
  • 作者:【日】鈴木啟修 
  • 譯者:張文升  馮若航  劉陽明
  • ISBN:978-7-121-35709-1
  • 頁數:244
  • 定價:79
  • 出版社:電子工業出版社
  • 出版時間:2019-06
  • 裝幀:平裝
  • 開本:16
內容提要,目錄,作者簡介,

內容提要

《PostgreSQL指南:內幕探索》介紹了PostgreSQL 內部的工作原理,包括資料庫對象的邏輯組織與物理實現,進程與記憶體的架構。並依次剖析了幾個重要的子系統:查詢處理、外部數據包裝器、並發控制、清理過程、緩衝區管理、WAL、備份及流複製。本書為DBA 與系統開發者提供了一幅全景概念地圖,有助於讀者形成對資料庫實現的整體認識,亦可作為深入學習PostgreSQL 原始碼的導讀手冊,對於理解資料庫原理與PostgreSQL 內部實現大有裨益。
《PostgreSQL指南:內幕探索》適合資料庫開發人員及相關領域的研究人員、資料庫DBA 及高等院校相關專業的學生閱讀。

目錄

第1章 資料庫集簇、資料庫和數據表 1
1.1 資料庫集簇的邏輯結構 1
1.2 資料庫集簇的物理結構 2
1.2.1 資料庫集簇的布局 3
1.2.2 資料庫布局 4
1.2.3 表和索引相關檔案的布局 5
1.2.4 PostgreSQL中表空間的布局 7
1.3 堆表檔案的內部布局 8
1.4 讀寫元組的方式 11
1.4.1 寫入堆元組 11
1.4.2 讀取堆元組 12
第2章 進程和記憶體架構 14
2.1 進程架構 14
2.1.1 Postgres伺服器進程 15
2.1.2 後端進程 15
2.1.3 後台進程 16
2.2 記憶體架構 17
2.2.1 本地記憶體區域 17
2.2.2 共享記憶體區域 18
第3章 查詢處理 19
3.1 概覽 20
3.1.1 解析器 20
3.1.2 分析器 22
3.1.3 重寫器 24
3.1.4 計畫器與執行器 25
3.2 單表查詢的代價估計 27
3.2.1 順序掃描 28
3.2.2 索引掃描 29
3.2.3 排序 36
3.3 創建單表查詢的計畫樹 38
3.3.1 預處理 41
3.3.2 找出代價最小的訪問路徑 42
3.3.3 創建計畫樹 51
3.4 執行器如何工作 55
3.5 連線 57
3.5.1 嵌套循環連線 57
3.5.2 歸併連線 63
3.5.3 散列連線 67
3.5.4 連線訪問路徑與連線節點 73
3.6 創建多表查詢計畫樹 76
3.6.1 預處理 76
3.6.2 獲取代價最小的路徑 77
3.6.3 獲取三表查詢代價最小的路徑 81
參考文獻 83
第4章 外部數據包裝器 84
4.1 概述 85
4.1.1 創建一棵查詢樹 86
4.1.2 連線至遠程伺服器 86
4.1.3 使用EXPLAIN命令創建計畫樹(可選) 87
4.1.4 逆解析 87
4.1.5 傳送SQL命令並接收結果 88
4.2 POSTGRES_FDW的工作原理 90
4.2.1 多表查詢 91
4.2.2 排序操作 97
4.2.3 聚合函式 98
第5章 並發控制 101
5.1 事務標識 103
5.2 元組結構 104
5.3 元組的增、刪、改 106
5.3.1 插入 106
5.3.2 刪除 107
5.3.3 更新 108
5.3.4 空閒空間映射 109
5.4 提交日誌 110
5.4.1 事務狀態 110
5.4.2 提交日誌如何工作 110
5.4.3 提交日誌的維護 111
5.5 事務快照 111
5.6 可見性檢查規則 114
5.6.1 t_xmin的狀態為ABORTED 115
5.6.2 t_xmin的狀態為IN_PROGRESS 115
5.6.3 t_xmin的狀態為COMMITTED 116
5.7 可見性檢查 118
5.7.1 可見性檢查的過程 118
5.7.2 PostgreSQL可重複讀等級中的幻讀 122
5.8 防止丟失更新 122
5.8.1 並發UPDATE命令的行為 123
5.8.2 例子 125
5.9 可串列化快照隔離 127
5.9.1 SSI實現的基本策略 127
5.9.2 PostgreSQL的SSI實現 128
5.9.3 SSI的原理 129
5.9.4 假陽性的串列化異常 132
5.10 需要的維護進程 134
參考文獻 136
第6章 清理過程 137
6.1 並發清理概述 138
6.1.1 第一部分 139
6.1.2 第二部分 140
6.1.3 第三部分 140
6.1.4 後續處理 141
6.2 可見性映射 141
6.3 凍結過程 142
6.3.1 惰性模式 142
6.3.2 迫切模式 143
6.3.3 改進迫切模式中的凍結過程 146
6.4 移除不必要的CLOG檔案 147
6.5 自動清理守護進程 148
6.6 完整清理 148
第7章 堆內元組和僅索引掃描 153
7.1 堆內元組 153
7.1.1 沒有HOT時的行更新 153
7.1.2 HOT如何工作 154
7.2 僅索引掃描 157
第8章 緩衝區管理器 160
8.1 概覽 161
8.2 緩衝區管理器的結構 163
8.2.1 緩衝表 164
8.2.2 緩衝區描述符 165
8.2.3 緩衝區描述符層 167
8.2.4 緩衝池 169
8.3 緩衝區管理器鎖 169
8.3.1 緩衝表鎖 170
8.3.2 緩衝區描述符相關的鎖 170
8.4 緩衝區管理器的工作原理 174
8.4.1 訪問存儲在緩衝池中的頁面 174
8.4.2 將頁面從存儲載入到空槽 175
8.4.3 將頁面從存儲載入到受害者緩衝池槽 176
8.4.4 頁面替換算法:時鐘掃描 178
8.5 環形緩衝區 180
8.6 髒頁刷盤 181
第9章 WAL 182
9.1 概述 183
9.1.1 沒有WAL的插入操作 183
9.1.2 插入操作與資料庫恢復 184
9.1.3 整頁寫入 186
9.2 事務日誌與WAL段檔案 188
9.3 WAL段檔案的內部布局 190
9.4 WAL記錄的內部布局 191
9.4.1 WAL記錄首部部分 191
9.4.2 XLOG記錄的數據部分(9.4及更低版本) 193
9.4.3 XLOG記錄的數據部分(9.5及更高版本) 196
9.5 WAL記錄的寫入 200
9.6 WAL寫入進程 203
9.7 POSTGRESQL中的檢查點進程 203
9.7.1 檢查點進程概述 204
9.7.2 pg_crontrol檔案 205
9.8 POSTGRESQL中的資料庫恢復 206
9.9 WAL段檔案管理 209
9.9.1 WAL段切換 209
9.9.2 WAL段管理(9.5及更高版本) 209
9.9.3 WAL段管理(9.4及更低版本) 211
9.10 持續歸檔與歸檔日誌 212
第10章 基礎備份與時間點恢復 214
10.1 基礎備份 215
10.1.1 pg_start_backup 215
10.1.2 pg_stop_backup 217
10.2 時間點恢復(PITR)的工作原理 217
10.3 時間線與時間線歷史檔案 220
10.3.1 時間線標識 220
10.3.2 時間線歷史檔案 221
10.4 時間點恢復與時間線歷史檔案 222
第11章 流複製 224
11.1 流複製的啟動 225
11.2 如何實施流複製 227
11.2.1 主從間的通信 227
11.2.2 發生故障時的行為 229
11.3 管理多個備庫 229
11.3.1 同步優先權與同步狀態 229
11.3.2 主庫如何管理多個備庫 230
11.3.3 發生故障時的行為 231
11.4 備庫的故障檢測 232

作者簡介

Hironobu Suzuki (鈴木啟修)
畢業於北海道大學信息工程研究生院,獲得信息工程碩士學位,曾在多家公司擔任軟體開發人員和技術經理/技術主管。在資料庫和系統集成領域出版了7本書。
2010年—2016年擔任日本PostgreSQL用戶組的主任,連續7年組織了日本PostgreSQL技術研討會,並擔任日本2013年PostgreSQL大會的委員會主席。

相關詞條

熱門詞條

聯絡我們