PostgreSQL是和MySQL類似的關(guān)系型數(shù)據(jù)庫。最近PostgreSQL的關(guān)注度正在提升,各種會議、培訓(xùn),都在介紹PostgreSQL。本章按照關(guān)系型數(shù)據(jù)的一般性結(jié)構(gòu)進(jìn)行講解,即安裝→建庫→建表→查詢→索引→視圖→觸發(fā)器→權(quán)限管理→備份→事務(wù)→優(yōu)化。具體章安排如下:第1章 初識PostgreSQL;第2章 安裝及啟動PostgreSQL;第3章 創(chuàng)建數(shù)據(jù)庫并輸入數(shù)據(jù);第4章 數(shù)據(jù)類型及其運(yùn)算符;第5章 函數(shù);第6章 查詢和修改數(shù)據(jù);第7章 索引;第8章 視圖;第9章 觸發(fā)器第10章 表繼承和表分區(qū);第11章 管理用戶權(quán)限和模式;第12章 配置和管理數(shù)據(jù)庫服務(wù)器;第13章 備份和恢復(fù)數(shù)據(jù);第14章 事務(wù);第15章 優(yōu)化SQL語句;第16章 優(yōu)化數(shù)據(jù)庫服務(wù)端性能;第17章 PL/PgSQL服務(wù)端編程;第18章 高可用方案;第19章 設(shè)計(jì)一個商品管理數(shù)據(jù)庫;
屠要峰研究員、中興通訊數(shù)據(jù)庫技術(shù)專家委員會主任、研究院副院長、CCF信息存儲委員會常委、中國開源軟件聯(lián)盟理事。擁有二十多年大型軟件系統(tǒng)研發(fā)實(shí)踐經(jīng)驗(yàn),主持過大數(shù)據(jù)、云計(jì)算、云存儲及分布式數(shù)據(jù)庫等多個大型分布式系統(tǒng)的研發(fā)。負(fù)責(zé)中興通訊數(shù)據(jù)智能方向的研發(fā)及應(yīng)用,獲省級科技進(jìn)步一等獎兩次。主要研究方向?yàn)榇髷?shù)據(jù)、云計(jì)算、數(shù)據(jù)庫及存儲。陳河堆現(xiàn)任中興通訊數(shù)據(jù)庫平臺首席專家,PostgreSQL中文社區(qū)核心組成員,擁有十幾年數(shù)據(jù)庫研發(fā)工作經(jīng)驗(yàn),曾參與公司自研高性能內(nèi)存數(shù)據(jù)庫、分布式數(shù)據(jù)庫和分布式緩存等系統(tǒng)的設(shè)計(jì)和開發(fā),近年來醉心于鉆研開源數(shù)據(jù)庫技術(shù),熱心推動PostgreSQL在中國地區(qū)的推廣和應(yīng)用,積極參與PostgreSQL中文社區(qū)系列活動。
------------------第1篇 準(zhǔn)備
--第1章 初識PostgreSQL /2
1.1 PostgreSQL的起源 /2
1.2 PostgreSQL簡介 /3
∣1.2.1 基本概念 /3
∣1.2.2 存儲體系結(jié)構(gòu) /4
∣1.2.3 進(jìn)程體系架構(gòu) /6
1.3 PostgreSQL 10版本的新特性 /6
1.4 小結(jié) /7
-
-第2章 安裝和啟動PostgreSQL /8
2.1 安裝PostgreSQL /8
∣2.1.1 在Windows中安裝PostgreSQL /8
∣2.1.2 在Linux中安裝PostgreSQL /12
∣2.1.3 源碼安裝PostgreSQL /14
2.2 初始化數(shù)據(jù)庫 /17
2.3 數(shù)據(jù)庫的基本配置 /18
∣2.3.1 配置數(shù)據(jù)庫監(jiān)聽IP和端口 /18
∣2.3.2 配置數(shù)據(jù)庫錯誤日志 /18
2.4 啟動、停止、查看數(shù)據(jù)庫 /18
∣2.4.1 啟動數(shù)據(jù)庫 /18
∣2.4.2 停止數(shù)據(jù)庫 /19
∣2.4.3 查看數(shù)據(jù)庫狀態(tài) /19
2.5 小結(jié) /19
-
------------------第2篇 入門
-
第3章 創(chuàng)建數(shù)據(jù)庫和表 /21
3.1 認(rèn)識SQL語言 /21
∣3.1.1 SQL語句類型 /21
∣3.1.2 SQL數(shù)據(jù)類型 /21
3.2 使用交互式終端psql /22
∣3.2.1 連接數(shù)據(jù)庫 /22
∣3.2.2 常用命令 /23
∣3.2.3 使用技巧 /26
3.3 表空間的創(chuàng)建、修改和刪除 /27
∣3.3.1 實(shí)例1:創(chuàng)建表空間 /27
∣3.3.2 實(shí)例2:修改表空間 /29
∣3.3.3 實(shí)例3:刪除表空間 /29
3.4 數(shù)據(jù)庫的創(chuàng)建、修改和刪除 /30
∣3.4.1 實(shí)例4:創(chuàng)建數(shù)據(jù)庫 /30
∣3.4.2 實(shí)例5:修改數(shù)據(jù)庫 /31
∣3.4.3 實(shí)例6:刪除數(shù)據(jù)庫 /32
3.5 創(chuàng)建數(shù)據(jù)表 /32
∣3.5.1 創(chuàng)建表的語法格式 /32
∣3.5.2 使用CHECK約束 /35
∣3.5.3 使用非空約束 /36
∣3.5.4 使用唯一性約束 /36
∣3.5.5 使用主鍵約束 /37
∣3.5.6 使用默認(rèn)約束 /38
∣3.5.7 使用外鍵約束 /38
∣3.5.8 實(shí)例7:設(shè)置表的屬性值自動增加 /40
∣3.5.9 實(shí)例8:查看表結(jié)構(gòu) /41
3.6 修改數(shù)據(jù)表 /42
∣3.6.1 實(shí)例9:修改表名 /42
∣3.6.2 實(shí)例10:修改字段名 /43
∣3.6.3 實(shí)例11:添加字段 /43
∣3.6.4 實(shí)例12:刪除字段 /44
∣3.6.5 實(shí)例13:刪除表的外鍵約束 /44
3.7 刪除數(shù)據(jù)表 /46
∣3.7.1 實(shí)例14:刪除沒有被關(guān)聯(lián)的表 /46
∣3.7.2 實(shí)例15:刪除被其他表關(guān)聯(lián)的主表 /46
3.8 數(shù)據(jù)的插入、修改和刪除 /47
∣3.8.1 實(shí)例16:向表中插入數(shù)據(jù) /47
∣3.8.2 實(shí)例17:修改表中的數(shù)據(jù) /48
∣3.8.3 實(shí)例18:刪除表中的數(shù)據(jù) /49
3.9 數(shù)據(jù)的簡單查詢 /50
∣3.9.1 實(shí)例19:創(chuàng)建最簡單的單表查詢 /50
∣3.9.2 實(shí)例20:創(chuàng)建帶過濾條件的查詢 /50
3.10 小結(jié) /51
-
第4章 數(shù)據(jù)類型及其運(yùn)算符 /52
4.1 數(shù)值類型 /52
∣4.1.1 整數(shù)類型 /52
∣4.1.2 任意精度數(shù)字類型 /53
∣4.1.3 浮點(diǎn)類型 /53
∣4.1.4 序列類型 /54
∣4.1.5 貨幣類型 /55
∣4.1.6 實(shí)例21:使用數(shù)學(xué)運(yùn)算符 /55
4.2 字符串類型 /56
∣4.2.1 字符串類型分類 /57
∣4.2.2 使用連接運(yùn)算符 /57
∣4.2.3 使用模式匹配運(yùn)算符 /58
4.3 二進(jìn)制數(shù)據(jù)類型 /60
∣4.3.1 二進(jìn)制數(shù)據(jù)類型簡介 /60
∣4.3.2 二進(jìn)制數(shù)據(jù)的十六進(jìn)制格式 /61
4.3.3 二進(jìn)制數(shù)據(jù)的轉(zhuǎn)義格式 /61
4.4 日期類型和時間類型 /61
∣4.4.1 日期類型和時間類型分類 /61
∣4.4.2 日期類型和時間類型輸入格式 /62
∣4.4.3 日期類型和時間類型輸出格式 /64
∣4.4.4 時區(qū) /64
∣4.4.5 使用日期類型和時間類型運(yùn)算符 /65
4.5 布爾類型 /66
∣4.5.1 布爾類型簡介 /66
∣4.5.2 布爾類型運(yùn)算符 /66
4.6 位串類型 /68
∣4.6.1 位串類型簡介 /68
∣4.6.2 實(shí)例22:使用位串類型運(yùn)算符 /68
4.7 枚舉類型 /69
∣4.7.1 聲明枚舉類型 /69
∣4.7.2 排序 /69
∣4.7.3 注意枚舉類型安全性 /70
4.8 幾何類型 /71
∣4.8.1 點(diǎn)(point) /71
∣4.8.2 線(line) /72
∣4.8.3 線段(lseg) /72
∣4.8.4 矩形(box) /73
∣4.8.5 路徑(path) /74
∣4.8.6 多邊形(polygon) /75
∣4.8.7 圓(circle) /75
∣4.8.8 實(shí)例23:使用幾何類型運(yùn)算符 /76
4.9 JSON數(shù)據(jù)類型 /77
∣4.9.1 JSON數(shù)據(jù)類型簡介 /77
∣4.9.2 JSON數(shù)據(jù)類型的輸入/輸出語法 /78
∣4.9.3 實(shí)例24:使用json運(yùn)算符 /79
∣4.9.4 實(shí)例25:使用jsonb運(yùn)算符 /79
4.10 范圍類型 /80
∣4.10.1 內(nèi)建范圍類型 /80
∣4.10.2 范圍類型的邊界 /81
∣4.10.3 范圍值的輸入 /81
∣4.10.4 使用范圍類型運(yùn)算符 /82
∣4.10.5 實(shí)例26:定義自己的范圍類型 /83
4.11 數(shù)組類型 /83
∣4.11.1 定義數(shù)組類型 /84
∣4.11.2 輸入數(shù)組 /84
∣4.11.3 訪問數(shù)組 /86
∣4.11.4 修改數(shù)組 /87
∣4.11.5 查找數(shù)組中的內(nèi)容 /88
∣4.11.6 數(shù)組運(yùn)算符 /89
4.12 小結(jié) /89
-
第5章 函數(shù) /90
5.1 數(shù)學(xué)函數(shù) /90
∣5.1.1 認(rèn)識數(shù)學(xué)函數(shù) /90
∣5.1.2 實(shí)例27:使用數(shù)學(xué)函數(shù)對小數(shù)取整 /93
5.2 字符串函數(shù) /94
∣5.2.1 認(rèn)識字符串函數(shù) /95
∣5.2.2 認(rèn)識二進(jìn)制字符串函數(shù) /99
∣5.2.3 實(shí)例28:使用format()函數(shù)格式化輸出 /101
5.3 數(shù)據(jù)類型格式化函數(shù) /103
5.4 序列函數(shù) /104
∣5.4.1 認(rèn)識序列函數(shù) /104
∣5.4.2 實(shí)例29:創(chuàng)建及使用序列函數(shù) /104
5.5 日期函數(shù)和時間函數(shù) /107
∣5.5.1 認(rèn)識日期函數(shù)和時間函數(shù) /107
∣5.5.2 實(shí)例30:使用AT TIME ZONE進(jìn)行時區(qū)轉(zhuǎn)換 /110
∣5.5.3 實(shí)例31:獲取當(dāng)前的日期和時間 /111
∣5.5.4 實(shí)例32:設(shè)置延時執(zhí)行 /112
5.6 位串函數(shù) /113
∣5.6.1 認(rèn)識位串函數(shù) /113
∣5.6.2 實(shí)例33:使用bit()函數(shù)轉(zhuǎn)換整數(shù)和位串 /113
5.7 枚舉函數(shù) /114
∣5.7.1 認(rèn)識枚舉函數(shù) /114
∣5.7.2 實(shí)例34:使用枚舉函數(shù)獲取枚舉類型中的值 /114
5.8 幾何函數(shù) /115
∣5.8.1 認(rèn)識幾何函數(shù) /115
∣5.8.2 實(shí)例35:使用area()函數(shù)計(jì)算幾何類型的面積 /117
5.9 JSON函數(shù) /117
∣5.9.1 JSON創(chuàng)建函數(shù) /117
∣5.9.2 JSON處理函數(shù) /118
∣5.9.3 實(shí)例36:使用to_json()函數(shù)將字符串轉(zhuǎn)換成JSON格式 /122
∣5.9.4 實(shí)例37:使用json_array_length()函數(shù)統(tǒng)計(jì)JSON數(shù)據(jù)類型中的元素個數(shù) /122
5.10 范圍函數(shù) /123
∣5.10.1 認(rèn)識范圍函數(shù) /123
∣5.10.2 實(shí)例38:用range_merge()函數(shù)獲取一個包含給定范圍的最小范圍 /123
∣5.10.3 實(shí)例39:用upper_inc()函數(shù)判斷上界是否被包含在范圍內(nèi) /123
5.11 數(shù)組函數(shù) /124
∣5.11.1 認(rèn)識數(shù)組函數(shù) /124
∣5.11.2 實(shí)例40:用array_position()函數(shù)在數(shù)組中檢索數(shù)據(jù) /125
∣5.11.3 實(shí)例41:用array_to_string()函數(shù)將數(shù)組轉(zhuǎn)為字符串 /126
5.12 其他函數(shù) /126
∣5.12.1 聚合函數(shù) /126
∣5.12.2 集合返回函數(shù) /131
∣5.12.3 系統(tǒng)信息函數(shù) /131
∣5.12.4 系統(tǒng)管理函數(shù) /133
5.13 小結(jié) /134
-
第6章 查詢和修改數(shù)據(jù) /135
6.1 SELECT語法 /135
6.2 單表查詢 /136
∣6.2.1 實(shí)例42:簡單查詢 /136
∣6.2.2 實(shí)例43:等值查詢 /137
∣6.2.3 實(shí)例44:范圍查詢 /137
∣6.2.4 實(shí)例45:去重 /138
∣6.2.5 實(shí)例46:排序 /140
∣6.2.6 實(shí)例47:分組 /140
∣6.2.7 實(shí)例48:分頁 /141
6.3 多表查詢 /142
∣6.3.1 實(shí)例49:內(nèi)連接 /143
∣6.3.2 實(shí)例50:外連接 /144
∣6.3.3 實(shí)例51:交叉連接 /146
∣6.3.4 實(shí)例52:多表關(guān)聯(lián)復(fù)合查詢 /146
6.4 子查詢 /147
∣6.4.1 實(shí)例53:IN/NOT IN 子查詢 /147
∣6.4.2 實(shí)例54:EXISTS/NOT EXISTS子查詢 /148
∣6.4.3 實(shí)例55:ANY/SOME/ALL子查詢 /149
6.5 模糊匹配查詢 /150
∣6.5.1 實(shí)例56:LIKE查詢 /150
∣6.5.2 實(shí)例57:SIMILAR TO查詢 /152
6.6 查詢運(yùn)算 /152
∣6.6.1 實(shí)例58:聚集運(yùn)算 /152
∣6.6.2 實(shí)例59:分組運(yùn)算 /154
∣6.6.3 實(shí)例60:表達(dá)式運(yùn)算 /156
∣6.6.4 實(shí)例61:遞歸查詢 /157
6.7 窗口函數(shù) /158
6.8 高級操作 /162
∣6.8.1 實(shí)例62:歸并數(shù)據(jù) /162
∣6.8.2 實(shí)例63:批量插入 /164
∣6.8.3 實(shí)例64:批量更新 /165
∣6.8.4 實(shí)例65:關(guān)聯(lián)更新 /166
∣6.8.5 實(shí)例66:批量刪除 /166
∣6.8.6 實(shí)例67:關(guān)聯(lián)刪除 /166
∣6.8.7 實(shí)例68:移動數(shù)據(jù)到歷史表 /167
∣6.8.8 實(shí)例69:清空表 /167
6.9 小結(jié) /168
-
-----------------第3篇 進(jìn)階
-
第7章 索引 /170
7.1 索引簡介 /170
∣7.1.1 索引的含義和作用 /170
∣7.1.2 索引的分類 /171
∣7.1.3 索引的設(shè)計(jì)原則 /172
7.2 索引操作 /172
∣7.2.1 創(chuàng)建索引 /172
∣7.2.2 修改索引 /174
∣7.2.3 刪除索引 /175
7.3 常用索引方法 /176
∣7.3.1 多列索引 /176
∣7.3.2 組合索引 /177
∣7.3.3 唯一索引 /177
∣7.3.4 表達(dá)式索引 /178
∣7.3.5 部分索引 /178
∣7.3.6 索引與排序 /180
7.4 索引類型 /180
∣7.4.1 B-tree索引 /180
∣7.4.2 Hash索引 /181
∣7.4.3 GiST索引 /182
∣7.4.4 SP-GiST索引 /184
∣7.4.5 GIN索引 /185
∣7.4.6 BRIN索引 /186
7.5 索引使用案例 /187
∣7.5.1 實(shí)例70:使用GiST索引提升RANGE類型數(shù)據(jù)的查詢性能 /187
∣7.5.2 實(shí)例71:使用SP-GiST索引快速查找?guī)缀慰臻g數(shù)據(jù) /189
∣7.5.3 實(shí)例72:使用GIN索引快速查找JSON數(shù)據(jù) /190
∣7.5.4 實(shí)例73:使用BRIN索引快速檢索時間類型數(shù)據(jù) /192
7.6 小結(jié) /194
-
第8章 視圖 /195
8.1 為什么使用視圖 /195
8.2 普通視圖 /195
∣8.2.1 創(chuàng)建視圖 /196
∣8.2.2 使用視圖 /198
8.3 物化視圖 /201
∣8.3.1 物化視圖和普通視圖的區(qū)別 /201
∣8.3.2 創(chuàng)建和刷新物化視圖 /201
∣8.3.3 實(shí)例74:使用物化視圖優(yōu)化查詢性能 /203
8.4 小結(jié) /205
-
第9章 觸發(fā)器 /206
9.1 常規(guī)觸發(fā)器 /206
∣9.1.1 了解常規(guī)觸發(fā)器 /206
∣9.1.2 實(shí)例75:創(chuàng)建觸發(fā)器 /208
∣9.1.3 實(shí)例76:修改觸發(fā)器 /211
∣9.1.4 實(shí)例77:刪除觸發(fā)器 /212
∣9.1.5 實(shí)例78:注意數(shù)據(jù)變更的可見性 /213
9.2 事件觸發(fā)器 /214
∣9.2.1 事件觸發(fā)器支持的事件 /214
∣9.2.2 實(shí)例79:創(chuàng)建一個具有數(shù)據(jù)庫審計(jì)功能的事件觸發(fā)器 /215
9.3 小結(jié) /217
-第10章 表繼承和表分區(qū) /218
10.1 表繼承 /218
∣10.1.1 表繼承的使用場景 /218
∣10.1.2 實(shí)例80:創(chuàng)建表繼承 /219
∣10.1.3 實(shí)例81:使用表繼承 /221
∣10.1.4 確定表繼承數(shù)據(jù)來源 /228
∣10.1.5 表繼承的局限性和注意事項(xiàng) /230
10.2 表分區(qū) /231
∣10.2.1 表分區(qū)的使用場景 /231
∣10.2.2 表分區(qū)的實(shí)現(xiàn)方式 /232
∣10.2.3 實(shí)例82:創(chuàng)建表分區(qū) /233
∣10.2.4 實(shí)例83:使用表分區(qū) /235
∣10.2.5 實(shí)例84:維護(hù)表分區(qū) /237
∣10.2.6 使用約束排除提升查詢性能 /240
∣10.2.7 表分區(qū)注意事項(xiàng) /243
10.3 小結(jié) /243
-
第11章 管理用戶權(quán)限和模式 /244
11.1 了解用戶、角色和權(quán)限 /244
11.2 管理用戶、角色和權(quán)限 /245
∣11.2.1 實(shí)例85:創(chuàng)建用戶 /245
∣11.2.2 實(shí)例86:刪除用戶 /246
∣11.2.3 實(shí)例87:創(chuàng)建角色 /247
∣11.2.4 實(shí)例88:刪除角色 /249
∣11.2.5 實(shí)例89:給角色授予權(quán)限 /250
∣11.2.6 實(shí)例90:使用系統(tǒng)默認(rèn)角色 /251
11.3 管理數(shù)據(jù)庫模式 /252
∣11.3.1 實(shí)例91:使用數(shù)據(jù)庫模式 /252
∣11.3.2 實(shí)例92:設(shè)置模式的搜索路徑 /253
∣11.3.3 管理數(shù)據(jù)庫模式權(quán)限 /254
∣11.3.4 pg_catalog模式 /254
11.4 小結(jié) /255
-
第12章 配置和管理數(shù)據(jù)庫服務(wù)器 /256
12.1 使用不同方式進(jìn)行參數(shù)設(shè)置 /256
∣12.1.1 了解參數(shù)格式 /256
∣12.1.2 實(shí)例93:通過配置文件設(shè)置參數(shù) /257
∣12.1.3 實(shí)例94:通過SQL命令設(shè)置參數(shù) /259
∣12.1.4 實(shí)例95:通過shell命令設(shè)置參數(shù) /261
∣12.1.5 實(shí)例96:使用include方式管理配置文件 /262
12.2 配置postgresql.conf文件的參數(shù) /262
∣12.2.1 連接和安全認(rèn)證參數(shù) /263
∣12.2.2 緩存和存儲參數(shù) /264
∣12.2.3 WAL日志參數(shù) /266
∣12.2.4 錯誤日志參數(shù) /267
∣12.2.5 AUTOVACUUM參數(shù) /274
12.3 配置pg_hba.conf文件的參數(shù) /274
∣12.3.1 了解不同客戶端認(rèn)證方法 /275
∣12.3.2 實(shí)例97:使用trust配置客戶端認(rèn)證 /276
∣12.3.3 實(shí)例98:使用md5配置客戶端認(rèn)證 /277
∣12.3.4 實(shí)例99:使用cert配置客戶端認(rèn)證 /277
12.4 服務(wù)端常用工具 /277
∣12.4.1 實(shí)例100:使用initdb初始化數(shù)據(jù)庫 /277
∣12.4.2 實(shí)例101:使用pg_ctl管理數(shù)據(jù)庫服務(wù) /278
∣12.4.3 實(shí)例102:使用pg_controldata查看控制信息 /280
∣12.4.4 實(shí)例103:使用pg_rewind同步數(shù)據(jù)目錄 /282
12.5 小結(jié) /283
-
第13章 備份和恢復(fù)數(shù)據(jù) /284
13.1 邏輯備份和恢復(fù) /284
∣13.1.1 實(shí)例104:使用pg_dump工具備份單庫單表數(shù)據(jù) /284
∣13.1.2 實(shí)例105:使用pg_restore工具恢復(fù)數(shù)據(jù) /287
∣13.1.3 實(shí)例106:使用pg_dumpall工具備份所有庫表數(shù)據(jù) /289
∣13.1.4 實(shí)例107:使用psql工具恢復(fù)pg_dumpall備份的數(shù)據(jù) /289
13.2 物理備份和恢復(fù) /289
∣13.2.1 實(shí)例108:使用pg_basebackup工具熱備份 /290
∣13.2.2 實(shí)例109:使用基礎(chǔ)備份恢復(fù)數(shù)據(jù) /292
13.3 增量備份和恢復(fù) /293
∣13.3.1 實(shí)例110:使用歸檔日志進(jìn)行增量備份 /293
∣13.3.2 實(shí)例111:將數(shù)據(jù)庫狀態(tài)恢復(fù)到指定時間點(diǎn) /294
∣13.3.3 實(shí)例112:恢復(fù)到指定事務(wù) /297
13.4 -第三方備份恢復(fù)工具 /299
∣13.4.1 認(rèn)識pg_rman工具 /299
∣13.4.2 實(shí)例113:使用pg_rman工具備份數(shù)據(jù) /301
13.5 小結(jié) /304
-
-----------------第4篇 高階
-
第14章 事務(wù) /306
14.1 事務(wù)的基本特性 /306
∣14.1.1 事務(wù)模型要解決的問題 /306
∣14.1.2 事務(wù)的四大特性 /307
∣14.1.3 實(shí)例114:設(shè)置合適的事務(wù)隔離級別 /308
14.2 理解事務(wù)的實(shí)現(xiàn)原理 /310
∣14.2.1 WAL機(jī)制 /310
∣14.2.2 MVCC機(jī)制 /311
∣14.2.3 Checkpoint機(jī)制 /314
∣14.2.4 Crash Recovery機(jī)制 /315
∣14.2.5 事務(wù)并發(fā)與鎖機(jī)制 /316
14.3 使用事務(wù) /319
∣14.3.1 理解事務(wù)語法 /319
∣14.3.2 實(shí)例115:使用ROLLBACK回滾事務(wù) /320
∣14.3.3 實(shí)例116:使用COMMIT提交事務(wù) /321
∣14.3.4 實(shí)例117:使用SAVEPOINT回滾部分事務(wù) /321
14.4 小結(jié) /323
-
第15章 優(yōu)化SQL語句 /324
15.1 理解查詢優(yōu)化器的工作原理 /324
∣15.1.1 SQL語句執(zhí)行過程 /324
∣15.1.2 了解查詢樹 /325
∣15.1.3 了解邏輯優(yōu)化 /326
∣15.1.4 邏輯優(yōu)化:對子查詢進(jìn)行優(yōu)化 /326
∣15.1.5 邏輯優(yōu)化:條件表達(dá)式優(yōu)化及等價謂詞重寫優(yōu)化 /327
∣15.1.6 邏輯優(yōu)化:外連接優(yōu)化 /328
∣15.1.7 了解物理優(yōu)化 /329
∣15.1.8 代價估算 /332
15.2 查看并分析執(zhí)行計(jì)劃 /334
∣15.2.1 EXPLAIN命令介紹 /334
∣15.2.2 EXPLAIN輸出解讀 /336
∣15.2.3 實(shí)例118:使用EXPLAIN分析執(zhí)行計(jì)劃 /338
15.3 常見SQL語句優(yōu)化 /343
∣15.3.1 實(shí)例119:使用索引避免表掃描 /343
∣15.3.2 實(shí)例120:子查詢優(yōu)化 /345
∣15.3.3 實(shí)例121:表連接優(yōu)化 /347
∣15.3.4 實(shí)例122:使用UNION ALL代替UNION /349
∣15.3.5 實(shí)例123:避免使用“SELECT *” /350
∣15.3.6 實(shí)例124:為jsonb字段建立合適的索引 /351
15.4 小結(jié) /352
-
第16章 優(yōu)化數(shù)據(jù)庫服務(wù)端性能 /353
16.1 了解數(shù)據(jù)庫性能指標(biāo) /353
∣16.1.1 衡量數(shù)據(jù)庫性能的指標(biāo) /353
∣16.1.2 影響數(shù)據(jù)庫性能的硬件因素 /353
∣16.1.3 實(shí)例125:使用nmon工具監(jiān)控Linux性能 /356
16.2 優(yōu)化存儲性能 /359
∣16.2.1 物理存儲介質(zhì)簡介 /359
∣16.2.2 存儲路徑隔離原則 /361
16.3 優(yōu)化數(shù)據(jù)庫配置參數(shù) /366
∣16.3.1 優(yōu)化內(nèi)存資源類參數(shù) /366
∣16.3.2 優(yōu)化臟頁刷寫類參數(shù) /368
∣16.3.3 優(yōu)化空間回收類參數(shù) /369
∣16.3.4 優(yōu)化WAL日志文件相關(guān)參數(shù) /372
∣16.3.5 數(shù)據(jù)庫性能視圖 /376
16.4 小結(jié) /383
-
第17章 PL/pgSQL服務(wù)端編程 /384
17.1 PL/pgSQL編程基礎(chǔ) /384
∣17.1.1 PL/pgSQL的結(jié)構(gòu) /384
∣17.1.2 PL/pgSQL的聲明 /386
∣17.1.3 PL/pgSQL的表達(dá)式 /389
∣17.1.4 PL/pgSQL的基本語句 /389
∣17.1.5 PL/pgSQL的控制結(jié)構(gòu) /392
∣17.1.6 PL/pgSQL的游標(biāo) /399
∣17.1.7 PL/pgSQL的錯誤和消息 /401
∣17.1.8 PL/pgSQL的觸發(fā)器函數(shù) /402
17.2 PL/pgSQL 編程實(shí)戰(zhàn) /405
∣17.2.1 PL/pgSQL開發(fā)建議 /405
∣17.2.2 實(shí)例126:編寫一個自定義用戶函數(shù) /407
∣17.2.3 實(shí)例127:從PL/SQL移植到PL/pgSQL /409
17.3 小結(jié) /411
-
第18章 高可用方案 /412
18.1 如何實(shí)現(xiàn)高可用方案 /412
∣18.1.1 基本概念 /412
∣18.1.2 實(shí)現(xiàn)自動故障接管(Failover) /414
∣18.1.3 WAL歸檔與流復(fù)制 /415
∣18.1.4 防止WAL日志文件被過早刪除 /418
∣18.1.5 巧用級聯(lián)復(fù)制 /419
∣18.1.6 同步復(fù)制與讀寫分離 /420
18.2 實(shí)例128:基于Corosync+Pacemaker的方案 /424
∣18.2.1 初識Corosync和Pacemaker /424
∣18.2.2 Corosync和Pacemaker的安裝 /426
18.2.3 基于Corosync+Pacemaker的高可用方案及實(shí)現(xiàn) /430
18.3 實(shí)例129:基于Stolon的方案 /436
∣18.3.1 Stolon方案架構(gòu)及特性 /436
∣18.3.2 Stolon方案安裝配置及實(shí)例 /437
18.4 小結(jié) /443