第1章 PostgreSQL概述
1.1 PostgreSQL 9.6中有什麼新技術
1.1.1 理解新的數據庫管理功能
1.1.2 探究新的SQL和開發者相關的功能
1.1.3 使用新的備份和復制功能
1.1.4 理解性能相關的特性
1.2 總結
第2章 理解事務和鎖定
2.1 使用PostgreSQL事務
2.1.1 在事務內處理錯誤
2.1.2 使用保存點
2.1.3 事務性DDL
2.2 理解基本的鎖定
2.3 使用FOR SHARE和FOR UPDATE
2.4 理解事務隔離級別
2.5 觀察死鎖和類似的問題
2.6 利用諮詢鎖
2.7 優化存儲以及控制清理
2.7.1 配置VACUUM和autovacuum
2.7.2 觀察工作中的VACUUM
2.7.3 利用snapshot too old
2.8 總結
第3章 使用索引
3.1 理解簡單查詢和代價模型
3.1.1 使用EXPLAIN
3.1.2 深究PostgreSQL代價模型
3.1.3 部署簡單的索引
3.1.4 使用排序輸出
3.1.5 一次使用多個索引
3.1.6 以一種聰明的方式使用索引
3.2 使用聚簇表改善速度
3.2.1 聚簇表
3.2.2 使用只用索引的掃描
3.3 理解另外的B-樹特性
3.3.1 組合索引
3.3.2 增加函數索引
3.3.3 減少空間消耗
3.3.4 在建立索引時添加數據
3.4 引入操作符類
3.5 理解PostgreSQL索引類型
3.5.1 Hash索引
3.5.2 GiST索引
3.5.3 GIN索引
3.5.4 SP-GiST索引
3.5.5 BRIN索引
3.5.6 增加額外索引
3.6 用模糊搜索實現更好的回答
3.6.1 利用pg_trgm
3.6.2 加速LIKE查詢
3.6.3 處理正則表達式
3.7 理解全文搜索-FTS
3.7.1 比較字符串
3.7.2 定義GIN索引
3.7.3 調試用戶的搜索
3.7.4 收集詞統計信息
3.7.5 利用排除操作符
3.8 總結
第4章 處理高級SQL
4.1 引入分組集
4.1.1 裝載一些案例數據
4.1.2 應用分組集
4.1.3 組合分組集和FILTER子句
4.2 使用有序集
4.3 理解假想聚集
4.4 利用窗口函數和分析
4.4.1 劃分數據
4.4.2 在窗口中排序數據
4.4.3 使用滑動窗口
4.4.4 提取窗口子句
4.4.5 使用內建窗口函數
4.5 編寫自己的聚集
4.5.1 創建簡單的聚集
4.5.2 為並行查詢增加支持
4.5.3 改進效率
4.5.4 編寫假想聚集
4.6 總結
第5章 日誌文件和系統統計信息
5.1 收集運行時統計信息
5.2 創建日誌文件
5.3 總結
第6章 優化查詢獲得良好性能
6.1 學習優化器的行為
6.2 理解執行計劃
6.2.1 系統地處理計劃
6.2.2 發現問題
6.3 理解並且固定連接
6.3.1 正確使用連接
6.3.2 處理外連接
6.3.3 理解join_collapse_limit變量
6.4 啟用和禁用優化器設置
6.5 分區數據
6.5.1 創建分區
6.5.2 應用表約束
6.5.3 修改繼承的結構
6.5.4 在分區結構中移進和移出表
6.5.5 清理數據
6.6 為好的查詢性能調整參數
6.6.1 加速排序
6.6.2 加速管理任務
6.7 總結
第7章 編寫存儲過程
7.1 理解存儲過程語言
7.2 理解各種存儲過程語言
7.2.1 引入PL/pgSQL
7.2.2 引入PL/Perl
7.2.3 引入PL/Python
7.3 改進存儲過程的性能
7.4 使用存儲過程
7.5 總結
第8章 管理PostgreSQL安全性
8.1 管理網絡安全性
8.1.1 理解綁定地址和連接
8.1.2 管理pg_hba.conf
8.1.3 處理實例級安全性
8.1.4 定義數據庫級安全性
8.1.5 調整方案級權限
8.1.6 使用表
8.1.7 處理列級安全性
8.1.8 配置默認特權
8.2 深入行級安全性—RLS
8.3 檢查權限
8.4 再分配對象和刪除用戶
8.5 總結
第9章 處理備份和恢復
9.1 執行簡單轉儲
9.1.1 運行pg_dump
9.1.2 傳遞口令和連接信息
9.1.3 提取數據的子集
9.1.4 處理多種數據格式
9.2 重放備份
9.3 處理全局數據
9.4 總結
第10章 理解備份和復制
10.1 理解事務日誌
10.1.1 察看事務日誌
10.1.2 理解檢查點
10.1.3 優化事務日誌
10.2 事務日誌歸檔和恢復
10.2.1 為歸檔進行配置
10.2.2 配置pg_hba.conf文件
10.2.3 創建基礎備份
10.2.4 重放事務日誌
10.2.5 清理事務日誌歸檔
10.3 設置異步複製
10.3.1 執行基本設置
10.3.2 停止和繼續複製
10.3.3 檢查復制以確保可用性
10.3.4 執行故障轉移以及理解時間線
10.3.5 管理衝突
10.3.6 讓複製更可靠
10.4 升級到同步複製
10.5 利用複制槽
10.5.1 處理物理複製槽
10.5.2 處理邏輯複製槽
10.6 總結
第11章 選定有用的擴展
11.1 理解擴展如何工作
11.2 利用contrib模塊
11.2.1 使用adminpack
11.2.2 應用布隆過濾器
11.2.3 部署btree_gist和btree_gin
11.2.4 Dblink-考慮逐步淘汰
11.2.5 用file_fdw取得文件數據
11.2.6 使用pageinspect檢查存儲
11.2.7 用pg_buffercache研究緩衝
11.2.8 用pgcrypto加密數據
11.2.9 用pg_prewarm預熱緩衝
11.2.10 用pg_stat_statements檢查性能
11.2.11 用pgstattuple檢查存儲
11.2.12 用pg_trgm進行模糊搜索
11.2.13 使用postgres_fdw連接到遠程服務器
11.3 其他有用的擴展
11.4 總結
第12章 在PostgreSQL中排查錯誤
12.1 著手處理一個陌生的數據庫
12.2 檢查pg_stat_activity
12.3 檢查慢查詢
12.3.1 檢查個體查詢
12.3.2 用perf深入研究
12.4 檢查日誌
12.5 檢查缺失的索引
12.6 檢查內存和I/O
12.7 了解值得注意的錯誤場景
12.7.1 面對clog損壞
12.7.2 理解檢查點消息
12.7.3 管理損壞的數據頁面
12.7.4 粗心的連接管理
12.7.5 與表膨脹鬥爭
12.8 總結
第13章 遷移到PostgreSQL
13.1 遷移SQL語句到PostgreSQL
13.1.1 使用側連接
13.1.2 使用分組集
13.1.3 使用WITH子句—公共表表達式
13.1.4 使用WITH RECURSIVE子句
13.1.5 使用FILTER子句
13.1.6 使用窗口函數
13.1.7 使用有序集—WITHIN GROUP子句
13.1.8 使用TABLESAMPLE子句
13.1.9 使用limit/offset
13.1.10 使用OFFSET
13.1.11 使用臨時表
13.1.12 匹配時間序列中的模式
13.2 從Oracle轉移到PostgreSQL
13.2.1 使用oracle_fdw擴展轉移數據
13.2.2 使用ora2pg從Oracle遷移
13.2.3 常見的陷阱
13.3 從MySQL或MariaDB轉移到PostgreSQL
13.3.1 處理MySQL和MariaDB中的數據
13.3.2 遷移數據和模式
13.4 總結