精通PostgreSQL 11(第2版)

精通PostgreSQL 11(第2版)

《精通PostgreSQL 11(第2版)》是清華大學出版社2020年出版的圖書,作者是漢斯·尤爾根·舍爾希。

基本介紹

  • 中文名:精通PostgreSQL 11(第2版)
  • 作者:漢斯·尤爾根·舍爾希
  • 出版社:清華大學出版社
  • 出版時間:2020年
  • ISBN:9787302547648 
內容簡介,作品目錄,

內容簡介

本書詳細闡述了與PostgreSQL 11相關的基本解決方案,主要包括PostgreSQL概述、理解事務和鎖定、使用索引、處理高級SQL、日誌檔案和系統統計信息、最佳化查詢性能、編寫存儲過程、管理PostgreSQL的安全性、處理備份和恢復、理解備份與複製、選取有用的擴展、檢修PostgreSQL、遷移到PostgreSQL等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。

作品目錄

第1章PostgreSQL概述1
1.1PostgreSQL11的新穎之處1
1.1.1理解新的資料庫管理功能1
1.1.2改良的索引及更好的最佳化3
1.1.3更好的快取管理4
1.1.4增強的視窗函式5
1.1.5引入即時編譯6
1.1.6增強的分區機制6
1.1.7增加對存儲過程的支持7
1.1.8改進的ALTERTABLE8
1.2小結9
1.3常見問題9
第2章 理解事務和鎖定11
2.1運用PostgreSQL事務11
2.1.1處理事務中的錯誤13
2.1.2使用SAVEPOINT14
2.1.3事務性DDL15
2.2了解基本的鎖定16
2.2.1避免典型錯誤和顯式鎖定18
2.2.2考慮可替換的解決方案20
2.3使用FORSHARE和FORUPDATE20
2.4了解事務隔離級別23
2.5觀察死鎖和類似的問題25
2.6利用諮詢鎖27
2.7最佳化存儲以及控制清理28
2.7.1配置VACUUM和autovacuum29
2.7.2觀察工作中的VACUUM31
2.7.3通過利用snapshottooold來限制事務34
2.8小結34
2.9常見問題35
第3章使用索引37
3.1理解簡單的查詢和代價模型37
3.1.1使用EXPLAIN38
3.1.2深究PostgreSQL代價模型40
3.1.3部署簡單的索引42
3.1.4使用排序輸出43
3.1.5高效地使用點陣圖掃描45
3.1.6以一種聰明的方式使用索引46
3.2使用聚簇表改善速度48
3.2.1聚簇表51
3.2.2使用只用索引的掃描51
3.3了解額外的btree特性52
3.3.1組合索引52
3.3.2增加函式索引53
3.3.3減少空間消耗54
3.3.4在建立索引時添加數據56
3.4引入操作符類56
3.4.1創建新操作符58
3.4.2創建操作符類61
3.4.3測試自定義操作符類62
3.5了解PostgreSQL的索引類型62
3.5.1Hash索引63
3.5.2GiST索引63
3.5.3GIN索引66
3.5.4SP-GiST索引67
3.5.5BRIN索引67
3.5.6增加額外的索引68
3.6用模糊搜尋實現更好的回答70
3.6.1利用pg_trgm70
3.6.2加速LIKE查詢72
3.6.3處理正則表達式73
3.7了解全文搜尋73
3.7.1比較字元串74
3.7.2定義GIN索引75
3.7.3調試你的搜尋76
3.7.4收集詞統計信息77
3.7.5利用排除操作符78
3.8小結79
3.9常見問題79
第4章處理高級SQL81
4.1引入分組集81
4.1.1裝載一些例子數據81
4.1.2套用分組集82
4.1.3組合分組集和FILTER子句85
4.2使用有序集86
4.3理解假想聚集88
4.4利用視窗函式和分析89
4.4.1劃分數據90
4.4.2在視窗中排序數據91
4.4.3使用滑動視窗92
4.4.4抽取視窗子句94
4.4.5使用內建視窗函式95
4.5編寫自己的聚集103
4.5.1創建簡單的聚集103
4.5.2為並行查詢增加支持106
4.5.3改進效率107
4.5.4編寫假想聚集109
4.6小結110
第5章日誌檔案和系統統計信息111
5.1收集運行時統計信息111
5.1.1檢查實時流量111
5.1.2檢查資料庫114
5.1.3檢查表117
5.1.4了解pg_stat_user_tables118
5.1.5深入研究索引119
5.1.6跟蹤後台工作者120
5.1.7跟蹤、歸檔以及流121
5.1.8檢查SSL連線124
5.1.9實時檢查事務124
5.1.10跟蹤清理進度125
5.1.11使用pg_stat_statements126
5.2創建日誌檔案129
5.2.1定義日誌目的地和輪轉130
5.2.2配置syslog1311
5.2.3記錄慢查詢132
5.2.4定義記錄什麼以及怎么記錄132
5.3小結135
5.4常見問題135
第6章最佳化查詢性能137
6.1學習最佳化器的行為137
6.1.1評估連線選項138
6.1.2套用轉換140
6.1.3套用等值約束141
6.1.4窮舉搜尋141
6.1.5全都試一遍142
6.1.6讓處理失敗142
6.1.7常量摺疊144
6.1.8理解函式內聯144
6.1.9連線剪枝146
6.1.10加速集合操作147
6.2理解執行計畫148
6.2.1系統地了解計畫149
6.2.2發現問題151
6.3了解並且固定連線155
6.3.1正確使用連線155
6.3.2處理外連線156
6.3.3理解join_collapse_limit變數157
6.4啟用和禁用最佳化器設定158
6.5數據分區162
6.5.1創建分區162
6.5.2套用表約束164
6.5.3修改繼承的結構166
6.5.4在分區結構中移進和移出表166
6.5.5清理數據167
6.5.6理解PostgreSQL11.0的分區技術168
6.6為好的查詢性能調整參數170
6.6.1加速排序173
6.6.2加速管理任務175
6.7使用並行查詢176
6.7.1PostgreSQL能並行做哪些事情?179
6.7.2並行實踐180
6.8JIT編譯181
6.8.1配置JIT181
6.8.2運行查詢182
6.9小結184
第7章編寫存儲過程187
7.1了解存儲過程語言187
7.1.1了解基本原理—存儲過程與函式188
7.1.2函式剖析189
7.2了解各種存儲過程語言192
7.2.1PL/pgSQL簡介193
7.2.2用PL/pgSQL編寫存儲過程210
7.2.3PL/Perl簡介211
7.2.4PL/Python簡介218
7.3改進函式221
7.3.1減少函式調用次數222
7.4將函式用於多種目的223
7.5小結225
7.6常見問題225
第8章管理PostgreSQL的安全性227
8.1管理網路安全性227
8.1.1理解綁定地址和連線228
8.1.2管理pg_hba.conf231
8.1.3處理實例級安全性235
8.1.4定義資料庫級安全性239
8.1.5調整方案級許可權241
8.1.6使用表243
8.1.7處理列級安全性244
8.1.8配置默認特權245
8.2深入研究行級安全性—RLS247
8.3檢查許可權251
8.4重新分配對象以及刪除用戶252
8.5小結254
8.6常見問題254
第9章處理備份和恢復255
9.1執行簡單的轉儲255
9.1.1運行pg_dump255
9.1.2傳遞口令和連線信息257
9.1.3抽取數據的子集259
9.2處理多種數據格式260
9.3重放備份261
9.4處理全局數據262
9.5小結263
9.6常見問題263
第10章理解備份與複製265
10.1理解事務日誌265
10.1.1查看事務日誌266
10.1.2理解檢查點267
10.1.3最佳化事務日誌267
10.2事務日誌歸檔與恢復269
10.2.1配置歸檔269
10.2.2配置pg_hba.conf檔案270
10.2.3創建基礎備份271
10.2.4重放事務日誌274
10.2.5清理事務日誌歸檔277
10.3設定異步複製278
10.3.1執行基礎設定279
10.3.2停止和繼續複製281
10.3.3檢查複製以確保可用性282
10.3.4執行故障轉移以及理解時間線285
10.3.5管理衝突285
10.3.6讓複製更可靠287
10.4升級成同步複製288
10.5利用複製槽291
10.5.1處理物理複製槽291
10.5.2處理邏輯複製槽293
10.6使用CREATEPUBLICATION以及CREATESUBSCRIPTION296
10.7小結298
10.8常見問題299
第11章 選取有用的擴展301
11.1 理解擴展如何工作301
11.2利用contrib模組305
11.2.1使用adminpack模組305
11.2.2套用布隆過濾器307
11.2.3部署btree_gist和btree_gin309
11.2.4Dblink—考慮逐步淘汰310
11.2.5用file_fdw取得檔案311
11.2.6使用pageinspect檢查存儲312
11.2.7用pg_buffercache研究緩衝314
11.2.8用pgcrypto加密數據316
11.2.9用pg_prewarm預熱緩衝316
11.2.10用pg_stat_statements檢查性能318
11.2.11用pgstattuple檢查存儲318
11.2.12用pg_trgm進行模糊搜尋319
11.2.13用postgres_fdw連線遠程伺服器320
11.3其他有用的擴展324
11.4小結325
第12章檢修PostgreSQL326
12.1著手處理一個陌生的資料庫326
12.2檢查pg_stat_activity326
12.2.1處理Hibernate語句328
12.2.2搞清楚查詢來自何處329
12.3檢查慢查詢329
12.3.1檢查個體查詢330
12.3.2用perf深入研究331
12.4檢查日誌332
12.5檢查缺失的索引333
12.6檢查記憶體和I/O333
12.7了解值得注意的錯誤場景335
12.7.1面對clog損壞336
12.7.2理解檢查點訊息337
12.7.3管理損壞的數據頁面337
12.7.4粗心的連線管理338
12.7.5與表膨脹作鬥爭339
12.8小結339
12.9常見問題340
第13章 遷移到PostgreSQL341
13.1 把SQL語句遷移到PostgreSQL341
13.1.1 使用lateral連線341
13.1.2使用分組集342
13.1.3使用WITH子句—公共表表達式343
13.1.4使用WITHRECURSIVE子句344
13.1.5使用FILTER子句344
13.1.6使用視窗函式345
13.1.7使用有序集—WITHINGROUP子句346
13.1.8使用TABLESAMPLE子句346
13.1.9使用limit/offset347
13.1.10使用OFFSET348
13.1.11使用臨時表349
13.1.12在時間序列中匹配模式349
13.2從Oracle轉向PostgreSQL349
13.2.1使用oracle_fdw擴展移動數據349
13.2.2使用ora2pg從Oracle進行遷移351
13.2.3常見的陷阱353
13.2.4ora_migrator—快速從Oracle遷移到PostgreSQL355
13.3從MySQL或MariaDB轉向PostgreSQL355
13.3.1處理MySQL和MariaDB中的數據356
13.3.2遷移數據和模式360
13.4小結363

相關詞條

熱門詞條

聯絡我們