本書由資深資料庫專業開發人員撰寫,系統介紹PostgreSQL
10的豐富特性,及其在生產實踐運維中的技巧,全書分為基礎篇、核心篇、進階篇,共18章。基礎篇包括第1~4章,主要介紹PostgreSQL基礎知識,例如安裝與配置、客戶端工具、數據類型、SQL高級特性等,為讀者閱讀核心篇和進階篇做好準備;核心篇包括第5~9章,主要介紹PostgreSQL核心內容,例如體系結構、並行查詢、事務與併發控制、分區表等;進階篇包括第10~18章,主要介紹PostgreSQL高級內容,例如性能優化、物理複製、邏輯複製、備份與恢復、高可用、版本升級、擴展模塊、Oracle資料庫遷移PostgreSQL實戰、PostGIS等。
作者介紹
譚峰,網名francs,中國開源軟體推進聯盟PostgreSQL分會特聘專家,《PostgreSQL 9 Administration Cookbook》譯者之一,《PostgreSQL High Performance Cookbook》英文版技術審校者之一,曾在杭州斯凱網路科技有限公司從事PostgreSQL
DBA一職六年。熱忠於博客分享PostgreSQL經驗,分享技術博客500餘篇。現就職於浙江移動負責應用上雲架構管控、資源配置以及私有雲建設工 作。
張文升,中國開源軟體推進聯盟PostgreSQL分會核心成員之一。常年活躍於PostgreSQL、MySQL、Redis等開源技術社區,堅持推動 PostgreSQL在中國地區的發展,多次參與組織PostgreSQL全國使用者大會。近年來致力於推動PostgreSQL在互聯網企業的應用以及企 業PostgreSQL培訓與技術支援。
張文升,中國開源軟體推進聯盟PostgreSQL分會核心成員之一。常年活躍於PostgreSQL、MySQL、Redis等開源技術社區,堅持推動 PostgreSQL在中國地區的發展,多次參與組織PostgreSQL全國使用者大會。近年來致力於推動PostgreSQL在互聯網企業的應用以及企 業PostgreSQL培訓與技術支援。
目錄
序言
前言
基 礎 篇
第1章 安裝與配置基礎2
1.1 初識PostgreSQL2
1.1.1 PostgreSQL的特點3
1.1.2 許可3
1.1.3 郵寄清單和討論區3
1.2 安裝PostgreSQL3
1.2.1 通過yum源安裝4
1.2.2 通過源碼編譯安裝5
1.2.3 設置一個軟連結7
1.3 用戶端程式和伺服器程式8
1.3.1 用戶端程式8
1.3.2 伺服器程式11
1.4 創建資料庫實例11
1.4.1 創建作業系統使用者11
1.4.2 創建資料目錄12
1.4.3 初始化資料目錄13
1.5 啟動和停止資料庫伺服器14
1.5.1 使用service方式15
1.5.2 使用pg_ctl進行管理15
1.5.3 其他啟動和關閉資料庫伺服器的方式16
1.5.4 配置開機啟動16
1.6 資料庫配置基礎17
1.6.1 設定檔的位置17
1.6.2 pg_hba.conf17
1.6.3 postgresql.conf19
1.6.4 允許遠端存取資料庫20
1.7 本章小結22
第2章 用戶端工具23
2.1 pgAdmin 4簡介23
2.1.1 pgAdmin 4 安裝23
2.1.2 pgAdmin 4 使用23
2.2 psql功能及應用26
2.2.1 使用psql連接資料庫26
2.2.2 psql元命令介紹28
2.2.3 psql導入、匯出表數據31
2.2.4 psql的語法和選項介紹34
2.2.5 psql執行sql腳本36
2.2.6 psql如何傳遞變數到SQL37
2.2.7 使用psql定制日常維護腳本38
2.2.8 psql亮點功能39
2.3 本章小結43
第3章 資料類型44
3.1 數位類型44
3.1.1 數位類型清單44
3.1.2 數位類型操作符和數學函數46
3.2 字元類型47
3.2.1 字元類型清單47
3.2.2 字元類型函數48
3.3 時間/日期類型49
3.3.1 時間/日期類型列表49
3.3.2 時間/日期類型操作符50
3.3.3 時間/日期類型常用函數51
3.4 布林類型52
3.5 網路位址類型53
3.5.1 網路位址類型列表54
3.5.2 網路位址操作符55
3.5.3 網路位址函數56
3.6 陣列類型56
3.6.1 陣列類型定義56
3.6.2 陣列類型值輸入56
3.6.3 查詢陣列元素57
3.6.4 陣列元素的追加、刪除、更新58
3.6.5 陣列操作符58
3.6.6 陣列函數59
3.7 範圍類型60
3.7.1 範圍類型列表60
3.7.2 範圍類型邊界61
3.7.3 範圍類型操作符62
3.7.4 範圍類型函數62
3.7.5 給範圍類型創建索引63
3.8 json/jsonb類型63
3.8.1 json類型簡介63
3.8.2 查詢json資料64
3.8.3 jsonb與json差異64
3.8.4 jsonb與json操作符65
3.8.5 jsonb與json函數66
3.8.6 jsonb鍵/值的追加、刪除、更新66
3.9 資料類型轉換68
3.9.1 通過格式化函數進行轉換68
3.9.2 通過CAST函數進行轉換68
3.9.3 通過::操作符進行轉換69
3.10 本章小結70
第4章 SQL高級特性71
4.1 WITH查詢71
4.1.1 複雜查詢使用CTE71
4.1.2 遞迴查詢使用CTE72
4.2 批量插入74
4.2.1 方式一:INSERT INTO...SELECT...74
4.2.2 方式二:INSERT INTO VALUES (),(),...()75
4.2.3 方式三:COPY或\COPY元命令75
4.3 RETURNING返回修改的資料76
4.3.1 RETURNING返回插入的資料76
4.3.2 RETURNING返回更新後資料77
4.3.3 RETURNING返回刪除的資料77
4.4 UPSERT78
4.4.1 UPSERT場景演示78
4.4.2 UPSERT語法79
4.5 資料抽樣80
4.5.1 SYSTEM抽樣方式81
4.5.2 BERNOULLI抽樣方式82
4.6 彙總函式84
4.6.1 string_agg函數84
4.6.2 array_agg函數85
4.7 視窗函數86
4.7.1 視窗函數語法86
4.7.2 avg() OVER()87
4.7.3 row_number()88
4.7.4 rank()89
4.7.5 dense_rank ()89
4.7.6 lag()90
4.7.7 first_value ()91
4.7.8 last_value ()91
4.7.9 nth_value ()92
4.7.10 視窗函數別名的使用92
4.8 本章小結93
核 心 篇
第5章 體系結構96
5.1 邏輯和物理存儲結構96
5.1.1 邏輯存儲結構96
5.1.2 物理存儲結構97
5.2 進程結構105
5.2.1 守護進程與服務進程105
5.2.2 輔助進程105
5.3 記憶體結構106
5.3.1 本地記憶體106
5.3.2 共用記憶體107
5.4 本章小結107
第6章 並行查詢109
6.1 並行查詢相關配置參數109
6.2 並行掃描111
6.2.1 並行順序掃描111
6.2.2 並行索引掃描112
6.2.3 並行index-only掃描114
6.2.4 並行bitmap heap掃描115
6.3 並行聚合117
6.4 多表關聯119
6.4.1 Nested loop多表關聯120
6.4.2 Merge join多表關聯121
6.4.3 Hash join多表關聯122
6.5 本章小結124
第7章 事務與併發控制125
7.1 事務和併發控制的概念125
7.1.1 事務的基本概念和性質125
7.1.2 併發引發的現象126
7.1.3 ANSI SQL標準的事務隔離級別129
7.2 PostgreSQL的事務隔離級別130
7.2.1 查看和設置資料庫的事務隔離級別131
7.2.2 修改全域的事務隔離級別132
7.2.3 查看當前會話的事務隔離級別132
7.2.4 設置當前會話的事務隔離級別132
7.2.5 設置當前事務的事務隔離級別133
7.3 PostgreSQL的併發控制133
7.3.1 基於鎖的併發控制134
7.3.2 基於多版本的併發控制134
7.3.3 通過pageinspect觀察MVCC137
7.3.4 使用pg_repack解決表膨脹問題140
7.3.5 支援事務的DDL140
7.4 本章小結141
第8章 分區表142
8.1 分區表的
前言
基 礎 篇
第1章 安裝與配置基礎2
1.1 初識PostgreSQL2
1.1.1 PostgreSQL的特點3
1.1.2 許可3
1.1.3 郵寄清單和討論區3
1.2 安裝PostgreSQL3
1.2.1 通過yum源安裝4
1.2.2 通過源碼編譯安裝5
1.2.3 設置一個軟連結7
1.3 用戶端程式和伺服器程式8
1.3.1 用戶端程式8
1.3.2 伺服器程式11
1.4 創建資料庫實例11
1.4.1 創建作業系統使用者11
1.4.2 創建資料目錄12
1.4.3 初始化資料目錄13
1.5 啟動和停止資料庫伺服器14
1.5.1 使用service方式15
1.5.2 使用pg_ctl進行管理15
1.5.3 其他啟動和關閉資料庫伺服器的方式16
1.5.4 配置開機啟動16
1.6 資料庫配置基礎17
1.6.1 設定檔的位置17
1.6.2 pg_hba.conf17
1.6.3 postgresql.conf19
1.6.4 允許遠端存取資料庫20
1.7 本章小結22
第2章 用戶端工具23
2.1 pgAdmin 4簡介23
2.1.1 pgAdmin 4 安裝23
2.1.2 pgAdmin 4 使用23
2.2 psql功能及應用26
2.2.1 使用psql連接資料庫26
2.2.2 psql元命令介紹28
2.2.3 psql導入、匯出表數據31
2.2.4 psql的語法和選項介紹34
2.2.5 psql執行sql腳本36
2.2.6 psql如何傳遞變數到SQL37
2.2.7 使用psql定制日常維護腳本38
2.2.8 psql亮點功能39
2.3 本章小結43
第3章 資料類型44
3.1 數位類型44
3.1.1 數位類型清單44
3.1.2 數位類型操作符和數學函數46
3.2 字元類型47
3.2.1 字元類型清單47
3.2.2 字元類型函數48
3.3 時間/日期類型49
3.3.1 時間/日期類型列表49
3.3.2 時間/日期類型操作符50
3.3.3 時間/日期類型常用函數51
3.4 布林類型52
3.5 網路位址類型53
3.5.1 網路位址類型列表54
3.5.2 網路位址操作符55
3.5.3 網路位址函數56
3.6 陣列類型56
3.6.1 陣列類型定義56
3.6.2 陣列類型值輸入56
3.6.3 查詢陣列元素57
3.6.4 陣列元素的追加、刪除、更新58
3.6.5 陣列操作符58
3.6.6 陣列函數59
3.7 範圍類型60
3.7.1 範圍類型列表60
3.7.2 範圍類型邊界61
3.7.3 範圍類型操作符62
3.7.4 範圍類型函數62
3.7.5 給範圍類型創建索引63
3.8 json/jsonb類型63
3.8.1 json類型簡介63
3.8.2 查詢json資料64
3.8.3 jsonb與json差異64
3.8.4 jsonb與json操作符65
3.8.5 jsonb與json函數66
3.8.6 jsonb鍵/值的追加、刪除、更新66
3.9 資料類型轉換68
3.9.1 通過格式化函數進行轉換68
3.9.2 通過CAST函數進行轉換68
3.9.3 通過::操作符進行轉換69
3.10 本章小結70
第4章 SQL高級特性71
4.1 WITH查詢71
4.1.1 複雜查詢使用CTE71
4.1.2 遞迴查詢使用CTE72
4.2 批量插入74
4.2.1 方式一:INSERT INTO...SELECT...74
4.2.2 方式二:INSERT INTO VALUES (),(),...()75
4.2.3 方式三:COPY或\COPY元命令75
4.3 RETURNING返回修改的資料76
4.3.1 RETURNING返回插入的資料76
4.3.2 RETURNING返回更新後資料77
4.3.3 RETURNING返回刪除的資料77
4.4 UPSERT78
4.4.1 UPSERT場景演示78
4.4.2 UPSERT語法79
4.5 資料抽樣80
4.5.1 SYSTEM抽樣方式81
4.5.2 BERNOULLI抽樣方式82
4.6 彙總函式84
4.6.1 string_agg函數84
4.6.2 array_agg函數85
4.7 視窗函數86
4.7.1 視窗函數語法86
4.7.2 avg() OVER()87
4.7.3 row_number()88
4.7.4 rank()89
4.7.5 dense_rank ()89
4.7.6 lag()90
4.7.7 first_value ()91
4.7.8 last_value ()91
4.7.9 nth_value ()92
4.7.10 視窗函數別名的使用92
4.8 本章小結93
核 心 篇
第5章 體系結構96
5.1 邏輯和物理存儲結構96
5.1.1 邏輯存儲結構96
5.1.2 物理存儲結構97
5.2 進程結構105
5.2.1 守護進程與服務進程105
5.2.2 輔助進程105
5.3 記憶體結構106
5.3.1 本地記憶體106
5.3.2 共用記憶體107
5.4 本章小結107
第6章 並行查詢109
6.1 並行查詢相關配置參數109
6.2 並行掃描111
6.2.1 並行順序掃描111
6.2.2 並行索引掃描112
6.2.3 並行index-only掃描114
6.2.4 並行bitmap heap掃描115
6.3 並行聚合117
6.4 多表關聯119
6.4.1 Nested loop多表關聯120
6.4.2 Merge join多表關聯121
6.4.3 Hash join多表關聯122
6.5 本章小結124
第7章 事務與併發控制125
7.1 事務和併發控制的概念125
7.1.1 事務的基本概念和性質125
7.1.2 併發引發的現象126
7.1.3 ANSI SQL標準的事務隔離級別129
7.2 PostgreSQL的事務隔離級別130
7.2.1 查看和設置資料庫的事務隔離級別131
7.2.2 修改全域的事務隔離級別132
7.2.3 查看當前會話的事務隔離級別132
7.2.4 設置當前會話的事務隔離級別132
7.2.5 設置當前事務的事務隔離級別133
7.3 PostgreSQL的併發控制133
7.3.1 基於鎖的併發控制134
7.3.2 基於多版本的併發控制134
7.3.3 通過pageinspect觀察MVCC137
7.3.4 使用pg_repack解決表膨脹問題140
7.3.5 支援事務的DDL140
7.4 本章小結141
第8章 分區表142
8.1 分區表的
網路書店
類別
折扣
價格
-
新書87折$465