《PostgreSQL修煉之道:從小工到專家(第2版)》是2020年機械工業出版社出版的圖書,作者是唐成。
基本介紹
- 中文名:PostgreSQL修煉之道:從小工到專家(第2版)
- 作者:唐成
- 出版社:機械工業出版社
- 出版時間:2020年9月1日
- ISBN:9787111665038
內容簡介,作者簡介,目錄,
內容簡介
本書分為四大部分,分別為準備篇、基礎篇、提高篇和配套開源軟體及架構篇。準備篇為沒有資料庫基礎的讀者準備的,如果讀者已經具備了一定的資料庫基礎,可以跳過其中的一些內容。基礎篇介紹了PostgreSQL資料庫中的一些基礎內容,讀者學習完此篇可以完成基本的PostgreSQL資料庫的日常操作工作。提高篇講解了一些更深的內容,如PostgreSQL的一些技術內幕、特色功能、最佳化等方面的內容,讀者仔細閱讀此篇以便早日成為PostgreSQL資料庫高手。第三方開源軟體及架構篇講解了與PostgreSQL資料庫配套使用的一些常用的開源軟體及架構設計方面的內容,通過閱讀此篇,可以提高讀者的眼界和資料庫架構設計能力。
作者簡介
英文書名:Guide To Expert, The Pragmatic PostgreSQL
目錄
前言
第一篇 準備篇
第1章 PostgreSQL簡介 2
1.1 什麼是PostgreSQL 2
1.1.1 PostgreSQL的發展歷史 2
1.1.2 PostgreSQL資料庫的優勢 4
1.1.3 PostgreSQL套用現狀和發展趨勢 5
1.2 PostgreSQL資料庫與其他資料庫的對比 6
1.2.1 PostgreSQL與MySQL資料庫的對比 6
1.2.2 PostgreSQL與Oracle資料庫的對比 8
1.3 小結 8
第2章 PostgreSQL的安裝與配置 9
2.1 從發行版本安裝 9
2.1.1 Red Hat/CentOS下的安裝方法 10
2.1.2 Windows下的安裝方法 12
2.1.3 從發行版本安裝總結 18
2.2 從源碼安裝 18
2.2.1 編譯安裝過程簡介 18
2.2.2 下載原始碼 18
2.2.3 編譯及安裝 20
2.2.4 PostgreSQL的配置 22
2.2.5 創建資料庫實例 23
2.2.6 安裝contrib目錄下的工具 23
2.2.7 啟動和停止資料庫 23
2.2.8 編譯安裝過程中的常見問題及解決方法 24
2.3 PostgreSQL的簡單配置 25
2.3.1 pg_hba.conf的配置 26
2.3.2 修改監聽的IP和連線埠 26
2.3.3 資料庫日誌相關參數 26
2.3.4 記憶體參數的設定 27
2.4 PostgreSQL的安裝技巧 27
2.4.1 不想把資料庫實例創建到“/var/lib/pgsql”目錄下 27
2.4.2 如何使用較大的數據塊提高I/O性能 29
2.4.3 打開數據塊的checksum功能 29
2.5 小結 30
第3章 SQL入門 31
3.1 SQL語句語法簡介 31
3.1.1 語句的分類 31
3.1.2 詞法結構 31
3.2 DDL語句 32
3.2.1 建表語句 32
3.2.2 刪除表語句 34
3.3 DML語句 34
3.3.1 插入語句 34
3.3.2 更新語句 35
3.3.3 刪除語句 35
3.4 查詢語句 36
3.4.1 單表查詢語句 36
3.4.2 過濾條件的查詢 36
3.4.3 排序 37
3.4.4 分組查詢 38
3.4.5 多表關聯查詢 38
3.4.6 子查詢 40
3.5 其他SQL語句 42
3.5.1 INSERT ... SELECT語句 42
3.5.2 UNION語句 42
3.5.3 TRUNCATE TABLE語句 43
3.6 小結 43
第二篇 基礎篇
第4章 psql工具 46
4.1 psql介紹 46
4.2 psql的簡單使用 46
4.3 psql的常用命令 48
4.3.1 “\h”命令 49
4.3.2 “\d”命令 49
4.3.3 指定客戶端字元集的命令 52
4.3.4 格式化輸出的\pset命令 52
4.3.5 “\x”命令 55
4.3.6 執行存儲在外部檔案中的SQL命令 56
4.3.7 編輯命令 56
4.3.8 輸出信息的“\echo”命令 57
4.3.9 其他命令 58
4.4 psql的使用技巧 59
4.4.1 歷史命令與補全功能 59
4.4.2 自動提交技巧 59
4.4.3 如何得到psql中快捷命令執行的實際SQL 60
4.5 小結 62
第5章 數據類型 63
5.1 數據類型介紹 63
5.1.1 數據類型的分類 63
5.1.2 數據類型的輸入與轉換 65
5.2 布爾類型 65
5.2.1 布爾類型介紹 65
5.2.2 布爾類型的操作符 67
5.3 數值類型 68
5.3.1 數值類型介紹 68
5.3.2 整數類型 68
5.3.3 精確的小數類型 69
5.3.4 浮點數類型 70
5.3.5 序列類型 70
5.3.6 貨幣類型 70
5.3.7 數學函式和操作符 71
5.4 字元串類型 73
5.4.1 字元串類型介紹 73
5.4.2 字元串函式和操作符 73
5.5 二進制數據類型 76
5.5.1 二進制數據類型介紹 76
5.5.2 二進制數據類型轉義表示 76
5.5.3 二進制數據類型的函式 77
5.6 位串類型 78
5.6.1 位串類型介紹 78
5.6.2 位串類型的使用方法 78
5.6.3 位串的操作符及函式 79
5.7 日期/時間類型 80
5.7.1 日期/時間類型介紹 80
5.7.2 日期輸入 81
5.7.3 時間輸入 82
5.7.4 特殊值 84
5.7.5 函式和操作符列表 84
5.7.6 時間函式 85
5.7.7 extract和date_part函式 89
5.8 枚舉類型 90
5.8.1 枚舉類型的使用 90
5.8.2 枚舉類型說明 91
5.8.3 枚舉類型的函式 92
5.9 幾何類型 92
5.9.1 幾何類型概況 93
5.9.2 幾何類型的輸入 93
5.9.3 幾何類型的操作符 98
5.9.4 幾何類型的函式 106
5.10 網路地址類型 107
5.10.1 網路地址類型概況 107
5.10.2 inet與cidr類型 107
5.10.3 macaddr類型 110
5.10.4 網路地址類型的操作符 110
5.10.5 網路地址類型的函式 111
5.11 複合類型 112
5.11.1 複合類型的定義 112
5.11.2 複合類型的輸入 113
5.11.3 訪問複合類型 114
5.11.4 修改複合類型 114
5.11.5 複合類型的輸入輸出 115
5.12 xml類型 116
5.12.1 xml類型的輸入 116
5.12.2 字元集的問題 117
5.12.3 xml類型函式 118
5.13 JSON類型 124
5.13.1 JSON類型簡介 124
5.13.2 JSON類型的輸入與輸出 125
5.13.3 JSON類型的操作符 126
5.13.4 JSON類型的函式 127
5.13.5 JSON類型的索引 132
5.14 Range類型 136
5.14.1 Range類型簡介 136
5.14.2 創建Range類型 138
5.14.3 Range類型的輸入與輸出 138
5.14.4 Range類型的操作符 141
5.14.5 Range類型的函式 142
5.14.6 Range類型的索引和約束 142
5.15 數組類型 143
5.15.1 數組類型的聲明 143
5.15.2 如何輸入數組值 144
5.15.3 訪問數組 146
5.15.4 修改數組 148
5.15.5 數組的操作符 149
5.15.6 數組的函式 151
5.16 偽類型 153
5.17 其他類型 154
5.17.1 UUID類型 154
5.17.2 pg_lsn 類型 154
5.18 小結 155
第6章 邏輯結構管理 156
6.1 資料庫邏輯結構介紹 156
6.2 資料庫基本操作 156
6.2.1 創建資料庫 156
6.2.2 修改資料庫 157
6.2.3 刪除資料庫 158
6.2.4 常見問題及解答 158
6.3 模式 159
6.3.1 什麼是模式 159
6.3.2 模式的使用 159
6.3.3 公共模式 161
6.3.4 模式的搜尋路徑 161
6.3.5 模式的許可權 162
6.3.6 模式的可移植性 162
6.4 表 163
6.4.1 創建表 163
6.4.2 表的存儲屬性 165
6.4.3 臨時表 167
6.4.4 UNLOGGED表 170
6.4.5 默認值 170
6.4.6 約束 171
6.4.7 修改表 175
6.4.8 表繼承 179
6.4.9 通過表繼承實現分區表 181
6.4.10 聲明式分區 186
6.5 觸發器 188
6.5.1 創建觸發器 189
6.5.2 語句級觸發器與行級觸發器 190
6.5.3 BEFORE觸發器與AFTER觸發器 193
6.5.4 刪除觸發器 194
6.5.5 觸發器的行為 194
6.5.6 觸發器函式中的特殊變數 195
6.6 事件觸發器 196
6.6.1 創建事件觸發器 198
6.6.2 修改事件觸發器 201
6.7 表空間 201
6.7.1 什麼是表空間 201
6.7.2 表空間的使用方法 201
6.8 視圖 202
6.8.1 什麼是視圖 202
6.8.2 創建視圖 203
6.8.3 可更新視圖 204
6.9 索引 207
6.9.1 索引簡介 207
6.9.2 索引的分類 207
6.9.3 創建索引 208
6.9.4 並發創建索引 209
6.9.5 修改索引 211
6.9.6 刪除索引 212
6.10 用戶及許可權管理 213
6.10.1 用戶和角色 213
6.10.2 創建用戶和角色 213
6.10.3 許可權的管理 214
6.10.4 函式和觸發器的許可權 219
6.10.5 許可權的總結 220
6.10.6 許可權的示例 220
6.11 事務、並發和鎖 220
6.11.1 什麼是ACID 221
6.11.2 DDL事務 221
6.11.3 事務的使用方法 221
6.11.4 SAVEPOINT 222
6.11.5 事務隔離級別 224
6.11.6 兩階段提交 225
6.11.7 鎖機制 226
6.11.8 死鎖及防範 230
6.11.9 表級鎖命令LOCK TABLE 230
6.11.10 行級鎖命令 231
6.11.11 鎖的查看 231
6.12 小結 238
第7章 PostgreSQL的核心架構 239
7.1 進程及記憶體結構 239
7.1.1 進程和記憶體架構圖 239
7.1.2 主進程Postmaster介紹 240
7.1.3 Logger系統日誌進程介紹 241
7.1.4 BgWriter後台寫進程介紹 241
7.1.5 WalWriter預寫式日誌寫進程介紹 241
7.1.6 PgArch歸檔進程 242
7.1.7 AutoVacuum自動清理進程 242
7.1.8 PgStat統計數據收集進程 242
7.1.9 共享記憶體 242
7.1.10 本地記憶體 243
7.2 存儲結構 243
7.2.1 邏輯存儲結構 243
7.2.2 軟體目錄結構 244
7.2.3 物理存儲結構 244
7.2.4 表空間的目錄 246
7.3 應用程式訪問接口 247
7.3.1 訪問接口總體圖 247
7.3.2 不同程式語言的PostgreSQL驅動介紹 248
7.4 小結 249
第8章 服務管理 250
8.1 服務的啟停及原理 250
8.1.1 服務的啟停方法 250
8.1.2 pg_ctl工具 251
8.1.3 信號 255
8.1.4 postgres及單用戶模式 255
8.2 服務配置介紹 256
8.2.1 配置參數 256
8.2.2 連線配置項 259
8.2.3 記憶體配置項 261
8.2.4 預寫式日誌的配置項 262
8.2.5 錯誤報告和日誌項 264
8.3 訪問控制配置檔案 268
8.3.1 pg_hba.conf 檔案 268
8.3.2 認證方法介紹 269
8.3.3 認證方法實戰 270
8.4 備份和還原 271
8.4.1 邏輯備份 271
8.4.2 pg_dump命令 272
8.4.3 pg_restore命令 275
8.4.4 pg_dump和pg_restore套用示例 278
8.4.5 物理備份 279
8.4.6 使用LVM快照進行熱備份 279
8.5 常用的管理命令 282
8.5.1 查看系統信息的常用命令 282
8.5.2 系統維護常用命令 288
8.6 小結 289
第三篇 提高篇
第9章 PostgreSQL執行計畫 292
9.1 執行計畫的解釋 292
9.1.1 EXPLAIN命令 292
9.1.2 EXPLAIN輸出結果解釋 293
9.1.3 EXPLAIN使用示例 294
9.1.4 全表掃描 297
9.1.5 索引掃描 297
9.1.6 點陣圖掃描 297
9.1.7 條件過濾 298
9.1.8 嵌套循環連線 299
9.1.9 散列連線 299
9.1.10 合併連線 300
9.2 與執行計畫相關的配置項 301
9.2.1 ENABLE_*參數 301
9.2.2 COST基準值參數 301
9.2.3 基因查詢最佳化的參數 302
9.2.4 其他執行計畫配置項 303
9.3 統計信息的收集 304
9.3.1 統計信息收集器的配置項 304
9.3.2 SQL執行的統計信息輸出 304
9.3.3 手動收集統計信息 305
9.4 小結 306
第10章 PostgreSQL中的技術內幕 307
10.1 表中的系統欄位 307
10.1.1 oid 308
10.1.2 ctid 310
10.1.3 xmin、xmax、cmin、cmax 311
10.2 多版本並發控制 312
10.2.1 多版本並發控制的原理 312
10.2.2 Postg