-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

PostgreSQL修煉之道:從小工到專家 第2版

( 簡體 字)
作者:唐 成類別:1. -> 資料庫 -> PostgreSQL
譯者:
出版社:機械工業出版社PostgreSQL修煉之道:從小工到專家 第2版 3dWoo書號: 53534
詢問書籍請說出此書號!

缺書
NT售價: 645

出版日:9/1/2020
頁數:613
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111665038
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書

PostgreSQL數據庫是功能強大的開源數據庫,包含了其他商業或開源數據庫的大部分功能,PostgreSQL 10版本之后還添加了很多商業數據庫中沒有的功能。在本書第1版發行前,PostgreSQL就已獲得數個獎項,包括3次獲得Linux Journal雜志編輯評選的“最佳數據庫獎”(2000年度、2003年度和2004年度),2004年又獲得“Linux新媒體最佳數據庫系統獎”。此外,PostgreSQL還在2017—2018年連續兩年獲得了DB-Engines的“年度數據庫獎”稱號。

筆者很欣慰本書的第1版發行后得到了廣大讀者的認可。本書致力于全面講解PostgreSQL數據庫的必備知識。然而由于PostgreSQL的功能和特性非常多,要想全面和完整地講解PostgreSQL數據庫的內容十分困難,而第1版成書匆忙,有些內容講解得不夠深入和完善,同時第1版是基于PostgreSQL 9.4撰寫的,自第1版發布之后PostgreSQL已連續發布了9.5、9.6、10、11、12五個版本,增加了很多新的功能,因此筆者決定對第1版進行完善,同時增加對PostgreSQL新版本功能的講解。

第2版中補充了從9.4版本到當前最新版本增加的所有新功能。第10章增加了筆者這些年來積累的PostgreSQL數據庫技術內幕方面的新內容,如實例恢復與熱備份原理解密、控制文件解密、WAL文件解密等在市面上常見書籍中較少能看到的內容。第11章增加了BRIN索引、全文索引和數組等的相關內容。第12章增加了筆者多年來積累的優化PostgreSQL的經驗和方法,如使用大頁優化數據庫、數據庫配置的最佳實踐以及表、索引、SQL優化等內容。第13章增加了邏輯復制的相關內容。在PostgreSQL 10以上版本中,Standby備庫增加了很多新功能,書中做了詳細的介紹。同時在PostgreSQL 12版本中Standby的搭建方法發生了較大變化(將recovery.conf的內容合并到了postgresql.conf中),本書也增加了相關講解。第14∼19章講了一些開源軟件,這些開源軟件在本書第1版出版后也發布了很多新版本,其中開源軟件PgBouncer、Slony-I、 PL/Proxy、Postgres-XC的變化不是很大,本書根據這些軟件最新版本的情況進行了內容更新。但pgpool-II和Bucardo的新版本變化較大,本書介紹pgpool-II的章節增加了watchdog的配置以及更翔實的原理介紹,使讀者在學習之后可以更容易地搭建出更可靠、更穩定的pgpool-II集群。Bucardo新版本在配置方法上發生了很大變化,對此本書也進行了詳細的講解。

目前,國內越來越多的公司開始使用PostgreSQL,包括一些金融證?公司,同時很多知名的數據庫也是基于PostgreSQL做的二次開發,而云廠商如騰訊云、華為云、阿里云等都已經全面支持PostgreSQL數據庫,歡迎更多的朋友加入學習PostgreSQL數據庫的大潮中來。

讀者對象

適合閱讀本書的讀者:

數據庫入門者。本書是一本數據庫入門書,通過學習本書和相關的數據庫知識,對數據庫了解不是很深的數據庫愛好者也可以成為數據庫專家。

不熟悉PostgreSQL數據庫的DBA。可以幫助不熟悉PostgreSQL的DBA快速掌握該數據庫的相關知識,成長為一名合格的PostgreSQL DBA。

PostgreSQL DBA。熟悉PostgreSQL數據庫的DBA也可以在本書中學習到一些更深入的內容,使自身的數據庫水平更上一層樓。

開發人員。開發人員可以通過此書快速掌握PostgreSQL數據庫方面的知識和技巧,提高開發效率,做出更優秀的軟件產品。

如何閱讀本書

本書分為四大部分,分別為準備篇、基礎篇、提高篇和架構篇。準備篇是為沒有數據庫基礎的讀者準備的,如果讀者已經具備了一定的數據庫基礎,可以跳過其中的一些內容。基礎篇介紹了PostgreSQL數據庫的基礎內容,學習完此篇內容的讀者可以完成PostgreSQL數據庫的基本日常操作工作。提高篇講解了一些更深入的內容,如PostgreSQL的技術內幕、特色功能、優化等,仔細閱讀此篇有助于讀者早日成為PostgreSQL數據庫高手。架構篇講解了與PostgreSQL數據庫配套使用的常用開源軟件及架構設計方面的內容,通過閱讀此篇,讀者可以開拓眼界并提高數據庫架構設計能力。

本書給出了大量的實例,建議讀者邊閱讀此書邊按實例進行實際操作,以獲得最佳的學習效果。

勘誤和支持

由于筆者的水平有限,編寫的時間也較倉促,書中難免會有一些疏漏或者不準確的地方,敬請讀者朋友批評指正。讀者朋友可以將在書中遇到的問題及寶貴意見發送至tangcheng@csudata.com,筆者很期待能夠聽到你們的真摯反饋。

致謝

首先要感謝國內PostgreSQL數據庫愛好者,他們已經整理了大量的關于PostgreSQL的文章,翻譯了PostgreSQL官方手冊,讓筆者可以站在前人的肩膀上學習。大家可以在PostgreSQL的中國官方主頁http://www.postgres.cn/v2/document上看到這些成果。

感謝機械工業出版社華章公司的編輯Lisa老師,感謝她在這一年多的時間里始終支持筆者寫作,她鼓勵并幫助筆者順利完成了全部書稿。

最后要感謝筆者的妻子,她一直支持和鼓勵筆者,讓筆者能堅持把這本書寫完。

謹以此書獻給熱愛PostgreSQL的朋友們。



唐成(osdba)

中國,杭州,2020年6月
內容簡介:

本書是PostgreSQL數據庫領域內容全面且系統的中文著作,內容十分豐富。全書共20章,分為四個部分。

準備篇(第1∼3章)針對PostgreSQL數據庫的總體概況、安裝配置步驟及SQL基礎知識進行了介紹。

基礎篇(第4∼8章)介紹了psql工具的使用方法, PostgreSQL數據庫的數據類型和數據庫對象的操作方法,以及PostgreSQL數據庫的架構和數據庫服務的管理等知識。

提高篇(第9∼13章)講解PostgreSQL的執行計劃、技術內幕及特色功能,最后還介紹了數據庫優化方法和PostgreSQL Standby數據庫的搭建過程。若想早日成為PostgreSQL數據庫高手,請仔細閱讀這一部分內容。

架構篇(第14∼20章)介紹PostgreSQL中最常用的開源連接池軟件PgBouncer、邏輯復制軟件Slony-I、邏輯同步軟件Bucardo、具有數據水平拆分功能的開源軟件 PLProxy、數據庫中間件軟件pgpool-II、集群數據庫軟件Postgres-XC的使用方法,最后還介紹了與PostgreSQL數據庫配套使用的一些開源軟件和各種實用的高可用方案。



PostgreSQL是功能強大的開源數據庫,它基本上包含其他商業或開源數據庫中能找到的所有功能(如函數索引、觸發器、分析函數、自定義函數等),甚至包含一些商業數據庫中沒有的功能(如表的字段類型支持數組類型、JSON和JSONB類型,支持GiST空間索引等)。它提供了最接近工業標準SQL:2011(全稱為 ISO/IEC 9075:2011)的SQL查詢語言。它擁有完善的基于代價(COST)的查詢優化器,支持hash join、sort merge join等功能,可以正確高效地執行復雜的SQL語句。本書中有大量經過實戰經驗總結出來的實例,通過這些實例讀者可以更好地掌握PostgreSQL相關功能。

本書的主要內容和特色

增添PostgreSQl新版本功能:本書在第1版的基礎上添加了從PostgreSQL9.4到PostgreSQL12以來的新功能,包括BRIN索引、全文檢索、并行查詢、邏輯復制等,此外還對PostgreSQL12搭建Standby的方法、開源軟件pgpool-II和bucardo等版本發生的變化進行了補充。

詳解作者的優化知識與實踐經驗:包含了作者積累的PostgreSQL數據庫技術內幕知識,如實例恢復與熱備份原理解密、控制文件的解密、WAL文件解密等市面上較少能看到的內容,并將其多年積累的優化PostgreSQL的經驗和方法,如使用內存大頁優化數據庫、數據庫配置的最佳實踐及表、索引、SQL優化等分享出來。

全面、實用與特色兼顧:本書從SQL基礎、安裝配置、數據類型、數據庫的邏輯結構等基礎知識一直講到PostgreSQL的架構、技術內幕、特色功能、Standby、數據庫優化以及一些配套的開源軟件的使用,覆蓋了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 PostgreSQL中的多版本并發控制 313
10.2.3 PostgreSQL多版本的優劣分析 315
10.3 物理存儲結構 315
10.3.1 PostgreSQL中的術語 315
10.3.2 數據塊結構 316
10.3.3 Tuple結構 316
10.3.4 數據塊空閑空間管理 317
10.3.5 可見性映射表文件 320
10.4 控制文件解密 320
10.4.1 控制文件介紹 320
10.4.2 數據庫的唯一標識串解密 321
10.4.3 Checkpoint信息解密 322
10.4.4 與Standby相關的信息 323
10.5 WAL文件解密 324
10.5.1 WAL文件介紹 324
10.5.2 WAL文件名的秘密 324
10.5.3 WAL文件循環復用原理 325
10.6 CommitLog文件與事務ID技術解密 327
10.6.1 CommitLog文件介紹 327
10.6.2 事務ID技術 328
10.7 實例恢復與熱備份原理解密 328
10.7.1 實例恢復的原理 328
10.7.2 熱備份的原理 329
10.8 一些技術解密 332
10.8.1 Index-Only Scans 332
10.8.2 Heap-Only Tuples 334
10.9 小結 335
第11章 PostgreSQL的特色功能 336
11.1 規則系統 336
11.1.1 SELECT規則 336
11.1.2 更新規則 337
11.1.3 規則和權限 340
11.1.4 規則和命令狀態 341
11.1.5 規則與觸發器的比較 342
11.2 模式匹配和正則表達式 342
11.2.1 PostgreSQL中的模式匹配和正則表達式 343
11.2.2 傳統SQL的LIKE 操作符 343
11.2.3 SIMILAR TO 正則表達式 345
11.2.4 POSIX 正則表達式 346
11.2.5 模式匹配函數 substring 347
11.3 LISTEN與NOTIFY命令 349
11.3.1 LISTEN與NOTIFY的簡單示例 349
11.3.2 LISTEN與NOTIFY的相關命令 350
11.3.3 LISTEN與NOTIFY的使用詳解 351
11.4 索引的特色 354
11.4.1 表達式上的索引 354
11.4.2 部分索引 355
11.4.3 GiST索引 357
11.4.4 SP-GiST索引 359
11.4.5 GIN索引 360
11.4.6 BRIN索引 362
11.5 序列的使用 365
11.5.1 序列的創建 365
11.5.2 序列的使用及相關函數 366
11.5.3 常見問題及解答 368
11.6 咨詢鎖的使用 370
11.6.1 什么是咨詢鎖 370
11.6.2 咨詢鎖的函數及使用 370
11.6.3 常見問題及解答 374
11.7 SQL/MED 374
11.7.1 SQL/MED的介紹 375
11.7.2 外部數據包裝器對象 376
11.7.3 外部服務器對象 377
11.7.4 用戶映射對象 378
11.7.5 外部表對象 378
11.7.6 file_fdw使用實例 379
11.7.7 postgres_fdw使用實例 382
11.7.8 oracle_fdw使用實例 383
11.7.9 odbc_fdw使用實例 385
11.8 全文檢索 385
11.8.1 全文檢索介紹 386
11.8.2 全文檢索入門 386
11.8.3 使用zhparser做中文全文檢索 388
11.9 數組的特色功能 391
11.9.1 數組的應用場景介紹 391
11.9.2 數組的使用技巧 393
11.10 并行查詢功能 394
11.10.1 并行查詢相關的配置參數 395
11.10.2 支持的并行操作介紹 395
11.11 小結 396
第12章 數據庫優化 397
12.1 數據庫優化準則和方法 397
12.1.1 數據庫優化準則 397
12.1.2 優化方法 398
12.2 硬件知識 398
12.2.1 CPU及服務器體系結構 399
12.2.2 內存 400
12.2.3 硬盤 400
12.3 文件系統及I/O調優 402
12.3.1 文件系統的崩潰恢復 403
12.3.2 Ext2文件系統 403
12.3.3 Ext3文件系統 403
12.3.4 Ext4文件系統 404
12.3.5 XFS文件系統 406
12.3.6 Barriers I/O 406
12.3.7 I/O調優的方法 407
12.3.8 SSD的Trim優化 410
12.4 性能監控 410
12.4.1 數據庫性能視圖 411
12.4.2 Linux監控工具 414
12.5 數據庫配置優化 415
12.5.1 內存配置優化 415
12.5.2 大頁內存的配置 418
12.5.3 VACUUM中的優化 419
12.5.4 預寫式日志寫優化 422
12.5.5 配置的最佳實踐 424
12.6 數據庫的邏輯結構優化 430
12.6.1 表的優化 430
12.6.2 索引的優化 432
12.7 SQL的優化 436
12.7.1 找出慢的SQL 436
12.7.2 SQL語句的優化技巧 439
12.8 小結 441
第13章 Standby數據庫的搭建 442
13.1 Standby數據庫原理 442
13.1.1 PITR原理 442
13.1.2 WAL日志歸檔 443
13.1.3 流復制 444
13.1.4 Standby數據庫的運行原理 444
13.1.5 建Standby數據庫的步驟 445
13.2 pg_basebackup命令行工具 447
13.2.1 pg_basebackup介紹 447
13.2.2 pg_basebackup的命令行參數 447
13.2.3 pg_basebackup使用示例 449
13.3 異步流復制Hot Standby的示例 450
13.3.1 配置環境 450
13.3.2 主數據庫的配置 450
13.3.3 在Standby上生成基礎備份 451
13.3.4 啟動Standby數據庫 452
13.3.5 交換主備庫的角色 454
13.3.6 故障切換 455
13.4 同步流復制的Standby數據庫 458
13.4.1 同步流復制的架構 458
13.4.2 同步復制的配置 458
13.4.3 配置實例 459
13.5 檢查備庫及流復制情況 465
13.5.1 檢查異步流復制的情況 465
13.5.2 檢查同步流復制的情況 466
13.5.3 pg_stat_replication視圖詳解 467
13.5.4 查看備庫的狀態 468
13.6 Hot Standby的限制 470
13.6.1 Hot Standby的查詢限制 470
13.6.2 Hot Standby的查詢沖突處理 473
13.7 恢復配置詳解 474
13.7.1 歸檔恢復配置項 474
13.7.2 Recovery Target配置 475
13.7.3 Standby Server配置 476
13.8 流復制的注意事項 476
13.8.1 min_wal_size參數的配置 476
13.8.2 vacuum_defer_cleanup_age參數的配置 477
13.9 邏輯復制 477
13.9.1 邏輯復制的介紹 477
13.9.2 邏輯復制的發布 478
13.9.3 邏輯復制的訂閱 479
13.9.4 邏輯復制的沖突處理 481
13.9.5 邏輯復制的限制 481
13.9.6 邏輯復制的監控與安全 482
13.9.7 邏輯復制的相關配置參數 483
13.9.8 邏輯復制的搭建實踐 483
13.10 小結 488
第四篇 架構篇
第14章 PgBouncer 490
14.1 PgBouncer 介紹 490
14.2 PgBouncer的相關概念 491
14.3 PgBouncer的安裝方法 491
14.4 PgBouncer的簡單使用 491
14.4.1 簡單配置方法 492
14.4.2 啟動PgBouncer 492
14.4.3 停止PgBouncer 493
14.4.4 查看連接池信息 493
14.5 PgBouncer的配置文件詳解 495
14.5.1 “[databases]”配置 495
14.5.2 “[pgbouncer]”配置 496
14.5.3 用戶密碼文件 499
14.6 小結 500
第15章 Slony-I的使用 501
15.1 Slony-I中的主要概念 501
15.1.1 集群 502
15.1.2 節點 502
15.1.3 復制集合 502
15.1.4 數據原始生產者、數據提供者和數據訂閱者 502
15.1.5 Slon守護程序 502
15.1.6 Slonik配置程序 503
15.2 Slony-I復制的一些限制 503
15.3 在Linux下安裝和配置Slony-I 503
15.3.1 二進制方式安裝Slony-I 503
15.3.2 源碼編譯安裝Slony-I 504
15.3.3 配置Slony-I的基本復制 506
15.3.4 添加和移除表的復制 512
15.3.5 主備切換 513
15.4 小結 514
第16章 Bucardo的使用 515
16.1 Bucardo的相關概念 515
16.1.1 Bucardo介紹 515
16.1.2 Bucardo FAQ 515
16.1.3 Bucardo 同步中定義的概念 516
16.2 Bucardo的安裝方法 516
16.2.1 Bucardo的安裝步驟 516
16.2.2 安裝Test-Simple、ExtUtils-MakeMaker、version 517
16.2.3 安裝DBI及DBD::Pg 518
16.2.4 安裝DBIx-Safe 518
16.2.5 安裝Bucardo源碼包 518
16.2.6 使用yum安裝Bucardo 519
16.3 Bucardo同步配置 520
16.3.1 示例環境 520
16.3.2 Bucardo的工作原理 520
16.3.3 bucardo install 521
16.3.4 配置同步 523
16.3.5 Bucardo 常用命令 525
16.4 Bucardo的日常維護 526
16.4.1 Bucardo的觸發器日志清理 526
16.4.2 臨時停止和啟動同步的方法 526
16.4.3 新增表到同步的方法 527
16.4.4 移除某個表或序列的方法 527
16.5 小結 527
第17章 PL/Proxy的使用 528
17.1 PL/Proxy的相關概念 528
17.1.1 什么是PL/Proxy 528
17.1.2 PL/Proxy的特性說明 530
17.2 PL/Proxy的安裝及配置 530
17.2.1 編譯安裝 530
17.2.2 安裝規劃 531
17.2.3 配置過程 531
17.3 PL/Proxy的集群配置詳解 535
17.3.1 Cluster configuration API方式 536
17.3.2 SQL/MED方式配置集群 538
17.4 PL/Proxy語言詳解 539
17.4.1 CONNECT 539
17.4.2 CLUSTER 539
17.4.3 RUN ON 539
17.4.4 SPLIT 540
17.4.5 TARGET 540
17.5 PL/Proxy的高可用方案 540
17.5.1 方案介紹 540
17.5.2 方案架構 541
17.5.3 具體實施步驟 542
17.6 小結 550
第18章 pgpool-II的使用 551
18.1 pgpool-II的相關概念 551
18.1.1 什么是pgpool-II 551
18.1.2 pgpool-II的發展簡介 552
18.1.3 pgpool-II的架構 552
18.1.4 pgpool-II的工作模式 554
18.1.5 pgpool-II的程序模塊 556
18.2 pgpool-II的安裝方法 556
18.2.1 安裝軟件 556
18.2.2 安裝 pgpool_regclass 557
18.2.3 建立 insert_lock表 557
18.2.4 安裝pgpool_recovery 558
18.3 pgpool-II配置快速入門 558
18.3.1 pgpool-II的配置過程 558
18.3.2 內置復制模式的示例 561
18.3.3 流復制的主備模式示例 564
18.3.4 show命令 566
18.4 pgpool-II高可用配置方法 568
18.4.1 pgpool-II高可用切換及恢復的原理 568
18.4.2 pgpool-II的在線恢復 568
18.4.3 流復制模式中的故障切換 570
18.4.4 pgpool-II的健康檢查 571
18.4.5 流復制的主備模式的高可用示例 571
18.4.6 watchdog的配置 576
18.5 小結 582
第19章 Postgres-XC的使用 583
19.1 Postgres-XC的相關概念 583
19.1.1 什么是Postgres-XC 583
19.1.2 Postgres-XC的特點 584
19.1.3 Postgres-XC的性能 584
19.1.4 Postgres-XC的組件 585
19.2 Postgres-XC的安裝 585
19.2.1 源碼安裝方法 585
19.2.2 Postgres-XC目錄及程序說明 586
19.3 配置Postgres-XC集群 588
19.3.1 集群規劃 588
19.3.2 初始化GTM 588
19.3.3 初始化GTM備庫 589
19.3.4 初始化GTM Proxy 589
19.3.5 初始化Coordinators、數據節點 590
19.3.6 啟動集群 591
19.3.7 停止集群 592
19.3.8 配置集群節點信息 592
19.4 Postgres-XC的使用 594
19.4.1 建表詳解 594
19.4.2 使用限制 600
19.4.3 重新分布數據 601
19.4.4 增加Coordinator節點的方法 602
19.4.5 移除Coordinator節點的方法 603
19.4.6 增加Datanode節點的方法 604
19.4.7 移除Datanode節點的方法 605
19.5 小結 605
第20章 高可用性方案設計 606
20.1 高可用架構基礎 606
20.1.1 各種高可用架構介紹 606
20.1.2 服務的可靠性設計 607
20.1.3 數據可靠性設計 607
20.2 基于共享存儲的高可用方案 608
20.2.1 SAN存儲方案 608
20.2.2 DRBD方案 609
20.3 WAL日志同步或流復制同步方案 609
20.3.1 持續復制歸檔的Standby方法 609
20.3.2 異步流復制方案 610
20.3.3 同步流復制方案 610
20.4 基于觸發器的同步方案 610
20.4.1 基于觸發器的同步方案特點 610
20.4.2 基于此方案的同步軟件介紹 610
20.5 基于中間件的高可用方案 611
20.5.1 基于中間件的高可用方案的特點 611
20.5.2 基本中間件的開源軟件介紹 612
20.6 小結 613
序: