PostgreSQL修煉之道:從小工到專傢

PostgreSQL修煉之道:從小工到專傢 pdf epub mobi txt 電子書 下載 2025

唐成 著
圖書標籤:
  • PostgreSQL
  • 數據庫
  • SQL
  • 性能優化
  • 開發
  • 運維
  • 高級
  • 教程
  • 數據管理
  • PostGIS
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111498728
版次:1
商品編碼:11684063
品牌:機工齣版
包裝:平裝
叢書名: 數據庫技術叢書
開本:16開
齣版時間:2015-04-01
用紙:膠版紙
頁數:521

具體描述

編輯推薦

  PostgreSQL中國社區資深數據庫專傢、沃趣科技首席數據庫架構師撰寫,PostgreSQL數據庫領域經典著作

  係統講解PostgreSQL技術內幕,深入分析PostgreSQL特色功能,包含大量來自實際生産環境的經典案例和經驗總結

  PostgreSQL數據庫是目前功能最強大的開源數據庫,它基本上包含其他所有商業或開源數據庫中你能找到的功能(如函數索引、觸發器、分析函數、自定義函數等),甚至一些商業數據庫中沒有的功能它也有(如錶列的類型支持數組類型、JSON和JSONB類型,支持空間索引等)。它提供瞭最接近工業標準SQL92的SQL查詢語言,並且正在實現新的功能以兼容全新的SQL標準:SQL:2011。它擁有完善的基於代價(COST)的查詢優化器,支持“hash join”、“sort merge join”等功能,復雜的SQL語句仍然可以被正確高效地執行。本書將結閤大量的實例和經驗與您全方位探討PostgreSQL數據庫相關知識。

  《PostgreSQL修煉之道:從小工到專傢》的主要內容和特色:

  全麵且實踐性強:本書從SQL基礎、安裝配置、數據類型、數據庫的邏輯結構等基礎知識一直講到PostgreSQL的架構、技術內幕、特色功能、Standby、數據庫優化以及一些配套的開源軟件的使用,覆蓋瞭PostgreSQL領域方方麵麵的知識。幾乎每章都有大量的示例和經驗總結。

  實用與特色兼顧:書中不僅介紹瞭與PostgreSQL配套的實用性很強的主流開源軟件(如PgBouncer、Slony-I、Bucardo、PL/Proxy、pgpool-II、Postgres-XC),還針對PostgreSQL的特色功能(如規則係統、正則錶達式、序列、GiST索引等內容)進行瞭總結。

更多精彩,點擊進入品牌店查閱>>

內容簡介

  《PostgreSQL修煉之道:從小工到專傢》是目前有關PostgreSQL數據庫領域比較全麵和係統的中文著作,內容十分豐富。全書共20章,分為四個部分。

  準備篇(1~3章)針對PostgreSQL數據庫的總體概況、安裝配置步驟及SQL基礎知識進行瞭介紹。基礎篇(4~8章)的內容是為瞭幫助對PostgreSQL數據庫不是很瞭解的讀者打好基礎。這部分介紹瞭psql工具的使用方法, PostgreSQL數據庫的數據類型和數據庫對象的操作方法,以及PostgreSQL數據庫的架構和數據庫服務的管理等知識。提高篇(9~13章)講解PostgreSQL的執行計劃、技術內幕及特色功能,最後還介紹瞭解數據庫優化方法和PostgreSQL Standby數據庫的搭建過程。若想早日成為PostgreSQL數據庫高手,請仔細閱讀這一部分內容。第三方開源軟件及架構篇(14~20章)介紹PostgreSQL中最常用開源連接池軟件PgBouncer、邏輯復製軟件Slony-I、邏輯同步軟件Bucardo、數據水平拆分功能的開源軟件 PLProxy、數據庫中間件軟件pgpool-II、集群數據庫軟件Postgres-XC的使用方法。最後還介紹瞭與PostgreSQL數據庫配套使用的一些開源軟件和搭建各種實用的高可用方案方麵的知識。

作者簡介

  唐成,擁有十幾年數據庫、操作係統、存儲領域的工作經驗。目前任沃趣科技首席數據庫架構師,從事數據庫高可用、高性能以及數據庫雲化等方麵的研究工作。曆任阿裏巴巴數據庫專傢、高級數據庫專傢,從事過阿裏巴巴的綫上Oracle、Greenplum、PostgreSQL數據庫的架構設計和運維工作,為阿裏巴巴的PostgreSQL數據庫的布道者,推動阿裏雲的關係型數據庫服務(RDS)中提供PostgreSQL數據庫服務,為阿裏巴巴PostgreSQL數據庫方麵的技術帶頭人。也曾任網易杭州研究院開發專傢,主導瞭網易雲計算中的雲硬盤産品(類似有EBS)的設計和開發。

目錄

前言
第一篇準備篇
第1章PostgreSQL簡介2
1.1什麼是PostgreSQL2
1.1.1PostgreSQL概述2
1.1.2PostgreSQL的發展曆史2
1.1.3 PostgreSQL數據庫的優勢3
1.1.4 PostgreSQL應用現狀和發展趨勢4
1.2 PostgreSQL數據庫與其他數據庫的對比4
1.2.1PostgreSQL與MySQL數據庫的對比4
1.2.2 PostgreSQL與Oracle數據庫的對比6
1.3 小結6
第2章PostgreSQL安裝與配置7
2.1 從發行版本安裝7
2.1.1 在Debian或Ubuntu下的安裝7
2.1.2在Redhat、CentOS或Fedora下的安裝9
2.1.3 在Windows下的安裝12
2.1.4 發行版安裝總結16
2.2 從源碼安裝16
2.2.1 編譯安裝過程介紹16
2.2.2 下載源代碼17
2.2.3 編譯及安裝18
2.2.4 安裝後的配置20
2.2.5 創建數據庫簇21
2.2.6 安裝contrib目錄下的工具21
2.2.7 啓動和停止數據庫21
2.2.8 編譯安裝時的常見問題及解決方法22
2.3 安裝技巧介紹24
2.3.1 在Redhat、CentOS下使用二進製包安裝較新版本的方法24
2.3.2 如何使用較大的數據塊提高I/O性能25
2.4 PostgreSQL的簡單配置25
2.4.1 修改監聽的IP和端口25
2.4.2 與數據庫log相關的參數25
2.4.3 內存參數的設置26
2.5 小結26
第3章SQL語言入門27
3.1 SQL語句語法簡介27
3.1.1 語句的分類27
3.1.2 詞法結構27
3.2 DDL語句28
3.2.1 建錶語句28
3.2.2 刪除錶語句30
3.3 DML語句30
3.3.1 插入語句30
3.3.2 更新語句31
3.3.3 刪除語句31
3.4 查詢語句31
3.4.1 單錶查詢語句31
3.4.2 過濾條件的查詢32
3.4.3 排序32
3.4.4 分組查詢33
3.4.5 錶join34
3.5 其他SQL語句36
3.5.1 INSERT INTO... SELECT語句36
3.5.2 UNION語句36
3.5.3 TRUNCATE TABLE語句37
3.6 小結37
第二篇基礎篇
第4章psql工具的使用介紹40
4.1 psql介紹40
4.2 psql的簡單使用40
4.3 psql的常用命令42
4.3.1 d命令42
4.3.2 指定字符集編譯的命令45
4.3.3 pset命令46
4.3.4 x命令46
4.3.5 執行存儲在外部文件中的SQL命令47
4.3.6 顯示信息的命令48
4.3.7 更多的命令49
4.4 psql的使用技巧和注意事項50
4.4.1 曆史命令與補全的功能50
4.4.2 自動提交方麵的技巧50
4.4.3 如何得到psql中命令實際執行的SQL51
4.5 小結53
第5章數據類型54
5.1 類型介紹54
5.1.1 類型的分類54
5.1.2 類型輸入與轉換55
5.2 布爾類型56
5.2.1 布爾類型解釋56
5.2.2 布爾類型的操作符58
5.3 數值類型59
5.3.1 數值類型解釋59
5.3.2 整數類型 59
5.3.3 精確的小數類型59
5.3.4 浮點數類型60
5.3.5 序列類型61
5.3.6 貨幣類型61
5.3.7 數學函數和操作符62
5.4 字符串類型64
5.4.1 類型解釋64
5.4.2 字符串函數和操作符65
5.5 二進製數據類型67
5.5.1 二進製數據類型解釋67
5.5.2 二進製數據類型轉義錶示67
5.5.3 二進製數據類型的函數68
5.6 位串類型69
5.6.1 位串類型解釋69
5.6.2 位串類型的使用69
5.6.3 位串的操作符及函數70
5.7 日期/時間類型71
5.7.1 日期/時間類型詳解71
5.7.2 日期輸入72
5.7.3 時間輸入73
5.7.4 特殊值75
5.7.5 函數和操作符列錶75
5.7.6 時間函數77
5.7.7 extract和date_part函數80
5.8 枚舉類型81
5.8.1 枚舉類型的使用81
5.8.2 枚舉類型的說明82
5.8.3 枚舉類型的函數83
5.9 幾何類型84
5.9.1 幾何類型概況84
5.9.2 幾何類型的輸入84
5.9.3 幾何類型的操作符89
5.9.4 幾何類型的函數97
5.10 網絡地址類型98
5.10.1 網絡地址類型概況98
5.10.2 inet與cidr類型98
5.10.3 macaddr類型101
5.10.4 網絡地址類型的操作符101
5.10.5 網絡地址類型的函數102
5.11 復閤類型103
5.11.1 復閤類型的定義103
5.11.2 復閤類型的輸入104
5.11.3 訪問復閤類型105
5.11.4 修改復閤類型105
5.11.5 復閤類型的輸入與輸齣106
5.12 XML類型107
5.12.1 XML類型的輸入107
5.12.2 字符集的問題108
5.12.3 XML類型的函數109
5.13 JSON類型114
5.13.1 JSON類型簡介115
5.13.2 JSON類型的輸入與輸齣115
5.13.3 JSON類型的操作符116
5.13.4 JSON類型的函數118
5.13.5 JSON類型的索引121
5.14 Range類型125
5.14.1 Range類型簡介125
5.14.2 創建Range類型126
5.14.3 Range類型的輸入與輸齣127
5.14.4 Range類型的操作符130
5.14.5 Range類型的函數130
5.14.6 Range類型的索引和約束131
5.15 數組類型132
5.15.1 數組類型的聲明132
5.15.2 如何輸入數組值133
5.15.3 訪問數組135
5.15.4 修改數組137
5.15.5 數組的操作符138
5.15.6 數組的函數139
5.16 僞類型142
5.17 其他類型143
5.17.1 UUID類型143
5.17.2 pg_lsn 類型143
第6章邏輯結構管理145
6.1 數據庫邏輯結構介紹145
6.2 數據庫基本操作145
6.2.1 創建數據庫145
6.2.2 修改數據庫146
6.2.3 刪除數據庫147
6.2.4 常見問題及解答147
6.3 模式148
6.3.1 模式的定義148
6.3.2 模式的使用148
6.3.3 公共模式150
6.3.4 模式的搜索路徑150
6.3.5 模式的權限151
6.3.6 模式的移植性151
6.4 錶152
6.4.1 創建錶152
6.4.2 錶的存儲屬性154
6.4.3 臨時錶156
6.4.4 默認值158
6.4.5 約束159
6.4.6 修改錶163
6.4.7 錶繼承及分區錶167
6.4.8 分區錶168
6.5 觸發器173
6.5.1 創建觸發器173
6.5.2 語句級觸發器與行級觸發器175
6.5.3 BEFORE觸發器與AFTER觸發器177
6.5.4 刪除觸發器178
6.5.5 觸發器的行為179
6.5.6 觸發器函數中的特殊變量180
6.6 事件觸發器180
6.6.1 創建事件觸發器183
6.6.2 修改事件觸發器186
6.7 錶空間186
6.7.1 錶空間的定義186
6.7.2 錶空間的使用186
6.8 視圖187
6.8.1 視圖的定義187
6.8.2 創建視圖188
6.8.3 可更新視圖189
6.9 索引191
6.9.1 索引簡介191
6.9.2 索引的分類192
6.9.3 創建索引192
6.9.4 並發創建索引193
6.9.5 修改索引196
6.9.6 刪除索引196
6.10 用戶及權限管理197
6.10.1 用戶和角色197
6.10.2 創建用戶和角色198
6.10.3 權限的管理199
6.10.4 函數和觸發器的權限202
6.10.5 權限的總結202
6.10.6 權限的示例202
6.11 事務、並發、鎖203
6.11.1 ACID203
6.11.2 DDL事務204
6.11.3 事務的使用204
6.11.4 SAVEPOINT205
6.11.5 事務隔離級彆206
6.11.6 兩階段提交207
6.11.7 鎖機製209
6.11.8 死鎖及防範212
6.11.9 錶級鎖命令LOCK TABLE213
6.11.10 行級鎖命令213
6.11.11 鎖的查看214
第7章PostgreSQL的核心架構221
7.1 應用程序的訪問接口221
7.1.1 訪問接口總體圖221
7.1.2 不同編輯語言的PostgreSQL驅動介紹222
7.2 進程及內存結構223
7.2.1 進程和內存架構圖223
7.2.2 主進程Postmaster224
7.2.3 SysLogger(係統日誌)進程224
7.2.4 BgWriter(後颱寫)進程225
7.2.5 WalWriter(預寫式日誌寫)進程225
7.2.6 PgArch(歸檔)進程225
7.2.7 AutoVacuum(自動清理)進程225
7.2.8 PgStat(統計數據收集)進程226
7.2.9 共享內存226
7.2.10 本地內存226
7.3 目錄結構227
7.3.1 安裝目錄的結構227
7.3.2 數據目錄的結構227
7.3.3 錶空間的目錄228
第8章服務管理229
8.1 服務的啓停和創建229
8.1.1 啓停方法229
8.1.2 pg_ctl230
8.1.3 信號234
8.1.4 postgres及單用戶模式234
8.2 服務配置介紹235
8.2.1 配置參數235
8.2.2 連接配置項237
8.2.3 內存配置項240
8.2.4 預寫式日誌的配置項241
8.2.5 錯誤報告和日誌項243
8.3 訪問控製配置文件246
8.3.1 pg_hba.conf 文件247
8.3.2 認證方法介紹248
8.3.3 認證方法實戰249
8.4 備份和還原249
8.4.1 邏輯備份249
8.4.2 pg_dump命令250
8.4.3 pg_restore命令254
8.4.4 pg_dump和pg_restore使用舉例257
8.4.5 物理備份258
8.4.6 使用LVM快照進行熱備份259
8.5 常用的管理命令261
8.5.1 查看係統信息的常用命令261
8.5.2 係統維護常用命令267
第三篇提高篇
第9章PostgreSQL中執行計劃270
9.1 執行計劃的解釋270
9.1.1 EXPLAIN命令270
9.1.2 EXPLAIN輸齣結果解釋271
9.1.3 EXPLAIN使用示例272
9.1.4 全錶掃描275
9.1.5 索引掃描275
9.1.6 位圖掃描275
9.1.7 條件過濾276
9.1.8 Nestloop Join277
9.1.9 Hash Join277
9.1.10 Merge Join278
9.2 與執行計劃相關的配置項279
9.2.1 ENABLE_*參數 279
9.2.2 COST基準值參數279
9.2.3 基因查詢優化的參數280
9.2.4 其他執行計劃配置項281
9.3 統計信息的收集282
9.3.1 統計信息收集器的配置項282
9.3.2 SQL執行的統計信息輸齣283
9.3.3 手工收集統計信息283
第10章PostgreSQL中的技術內幕285
10.1 錶中的係統字段285
10.1.1 oid286
10.1.2 ctid288
10.1.3 xmin、xmax、cmin、cmax289
10.2 多版本並發控製290
10.2.1 多版本並發控製的原理290
10.2.2 PostgreSQL中的多版本並發控製291
10.2.3 PostgreSQL多版本的優劣分析293
10.3 物理存儲結構293
10.3.1 PostgreSQL中的術語293
10.3.2 數據塊結構293
10.3.3 Tuple結構294
10.3.4 數據塊空閑空間管理296
10.3.5 可見性映射錶文件298
10.4 技術解密298
10.4.1 Index-only scans298
10.4.2 Heap-Only Tuples300
第11章PostgreSQL的特色功能302
11.1 規則係統302
11.1.1 SELECT規則302
11.1.2 更新規則303
11.1.3 規則和權限306
11.1.4 規則和命令狀態307
11.1.5 規則與觸發器的比較308
11.2 模式匹配和正則錶達式308
11.2.1 PostgreSQL中的模式匹配和正則錶達式介紹308
11.2.2 傳統SQL的LIKE 操作符309
11.2.3 SIMILAR TO 正則錶達式310
11.2.4 POSIX 正則錶達式312
11.2.5 模式匹配函數 substring313
11.3 listen與notify315
11.3.1 listen與notify的簡單示例315
11.3.2listen與notify的相關命令316
11.3.3 listen與notify的使用詳解317
11.4 索引的特色320
11.4.1 錶達式上的索引320
11.4.2 部分索引320
11.4.3 GiST索引323
11.4.4 SP-GiST索引325
11.4.5 GIN索引326
11.5 序列的使用328
11.5.1 序列的創建328
11.5.2 序列的使用及相關的函數329
11.5.3 常見問題及解答331
11.6 谘詢鎖的使用333
11.6.1 谘詢鎖的定義333
11.6.2 谘詢鎖的函數及使用333
11.6.3 常見問題及解答337
11.7 SQL/MED338
11.7.1 SQL/MED的介紹338
11.7.2 外部數據包裝器對象339
11.7.3 外部服務器對象340
11.7.4 用戶映射對象341
11.7.5 外部錶對象341
11.7.6 file_fdw使用實例342
11.7.7 postgres_fdw使用實例345
第12章數據庫優化347
12.1 優化準則和方法347
12.1.1 優化準則347
12.1.2 優化方法348
12.2 硬件知識348
12.2.1 CPU及服務器體係結構348
12.2.2 內存349
12.2.3 硬盤350
12.3 文件係統及I/O調優352
12.3.1 文件係統的崩潰恢復352
12.3.2 Ext2文件係統353
12.3.3 Ext3文件係統353
12.3.4 Ext4文件係統354
12.3.5 XFS文件係統355
12.3.6 Barriers I/O355
12.3.7 I/O調優的方法356
12.4 性能監控359
12.4.1 數據庫性能視圖359
12.4.2 Linux監控工具362
12.5數據庫配置優化364
12.5.1內存配置優化364
12.5.2 關於雙緩存的優化366
12.5.3 vacuum中的優化367
12.5.4 預寫式日誌寫優化369
第13章Standby數據庫的搭建371
13.1 Standby數據庫原理371
13.1.1PITR原理371
13.1.2WAL日誌歸檔372
13.1.3流復製372
13.1.4Standby的運行原理373
13.1.5 創建Standby的步驟373
13.2 pg_basebackup命令行工具374
13.2.1 pg_basebackup介紹374
13.2.2 pg_basebackup的命令行參數375
13.2.3 pg_basebackup使用示例376
13.3 異步流復製Hot Standby的示例377
13.3.1 配置環境377
13.3.2 主數據庫的配置378
13.3.3 在Standby上生成基礎備份378
13.3.4 啓動Standby379
13.4 同步流復製的Standby數據庫380
13.4.1 同步流復製的架構380
13.4.2 同步復製的配置381
13.4.3 配置實例381
13.5 檢查備庫及流復製情況383
13.5.1 檢查異步流復製的情況383
13.5.2 檢查同步流復製的情況384
13.5.3 視圖pg_stat_replication詳解385
13.5.4 查看備庫的狀態385
13.6 Hot Standby的限製387
13.6.1 Hot Standby的查詢限製387
13.6.2 Hot Standby的查詢衝突處理389
13.7 恢復配置詳解390
13.7.1 歸檔恢復配置的配置項390
13.7.2 Recovery Target配置391
13.7.3 Standby Server配置 391
13.8 流復製的注意事項392
13.8.1 wal_keep_segments參數的配置392
13.8.2 vacuum_defer_cleanup_age參數的配置392
第四篇第三方開源軟件及架構篇
第14章PgBouncer394
14.1 PgBouncer 介紹394
14.2 PgBouncer中的概念395
14.3 PgBouncer的安裝方法395
14.4 PgBouncer的簡單使用395
14.5 PgBouncer的配置文件詳解399
第15章Slony-I的使用404
15.1Slony-I中的概念404
15.2 Slony-I復製的限製405
15.3 在Windows下使用pgAdminIII安裝配置Slony-I406
15.4在Linux下安裝配置Slony-I419
第16章Bucardo的使用426
16.1Bucardo中的概念426
16.2Bucardo的安裝方法427
16.3Bucardo同步配置429
16.4Bucardo的日常維護434
第17章PL/Proxy的使用436
17.1PL/Proxy中的概念436
17.2PL/Proxy安裝及配置438
17.3PL/Proxy的集群配置詳解443
17.4PL/Proxy語言詳解446
17.5PL/Proxy的一個高可用方案448
17.5.3具體實施步驟449
第18章pgpool-II的使用458
18.1 pgpool-II中的概念458
18.2 pgpool-II安裝方法462
18.3 pgpool-II配置快速入門463
18.4 pgpool-II高可用配置方法471
18.5 pgpool-II的總結492
第19章Postgres-XC的使用493
19.1 Postgres-XC中的概念493
19.2 Postgres-XC的安裝495
19.3 配置Postgres-XC集群497
19.4 Postgres-XC的使用503
第20章高可用性方案設計516
20.1 高可用架構基礎516
20.2 基於共享存儲的高可用方案517
20.3 WAL日誌同步或流復製同步的方案519
20.4 基於觸發器的同步方案520
20.5 基於語句中間件的高可用方案520

精彩書摘

  第一篇

  準 備 篇

  第1章PostgreSQL簡介

  第2章PostgreSQL安裝與配置

  第3章SQL語言入門

  第1章

  PostgreSQL簡介

  本章將著重介紹PostgreSQL數據庫的相關知識,讓沒有接觸過PostgreSQL的讀者對它有一個初步的瞭解。

  1.1什麼是PostgreSQL

  1.1.1PostgreSQL概述

  PostgreSQL數據庫是目前功能最強大的開源數據庫,支持豐富的數據類型(如JSON和JSONB類型、數組類型)和自定義類型。而且它提供瞭豐富的接口,可以很容易地擴展它的功能,如可以在GiST框架下實現自己的索引類型等,它還支持使用C語言寫自定義函數、觸發器,也支持使用流行的語言寫自定義函數,比如其中的PL/Perl提供瞭使用Perl語言寫自定義函數的功能,當然還有PL/Python、PL/Tcl,等等。

  1.1.2PostgreSQL的發展曆史

  前身Ingres:PostgreSQL的前身是伯剋利源於1977 年的 Ingres 項目。這個項目是由著名的數據庫科學傢Michael Stonebraker領導的。1982年,Michael Stonebraker離開伯剋利大學,把Ingres商業化,使之成為 Relational Technologies 公司的一個産品。後來 Relational Tecchnologies被Computer Associates(CA)收購。Ingres 是一個非關係型的數據庫。

  伯剋利的 Postgres 項目:20世紀80年代,數據庫係統中的一個主要問題是數據關係維護。在1985年Michael Stonebraker迴到伯剋利後,為瞭解決Ingres中的數據關係維護問題,啓動瞭一個後Ingres(post-Ingres)的項目,這就是 POSTGRES 的開端。 POSTGRES項目是由防務高級研究項目局(DARPA)、陸軍研究辦公室(ARO)、國傢科學基金(NSF) 以及 ESL公司共同贊助的。從1986年開始,Michael Stonebraker 教授發錶瞭一係列論文,探討瞭新的數據庫的結構設計和擴展設計。第一個“演示性”係統在 1987 年便可使用瞭,並且在 1988 年的數據管理國際會議(ACM-SIGMOD)上展齣。1989年6月發布瞭版本 1給一些外部的用戶使用。由於源代碼維護的時間日益增加,占用瞭太多本應用於數據庫研究的時間,為減少支持的負擔,伯剋利的POSTGRES 項目在版本 4.2 時正式終止。

  Postgres95:在 1994 年,來自中國香港的兩名伯剋利的研究生Andrew Yu 和 Jolly Chen 嚮 POSTGRES 中增加瞭現在SQL 語言的解釋器,將Postgres改名為 Postgres95,隨後將 Postgres95 源代碼發布到互聯網上供大傢使用。它成為一個開放源碼的POSTGRES 代碼的繼承者。

  PostgreSQL6.X:到瞭 1996 年,很明顯地看齣“Postgres95”這個名字已經經不起時間的考驗。於是起瞭一個新名字 PostgreSQL,為Postgres與SQL的縮寫,即增加瞭SQL功能的Postgres的意思。同時版本號也沿用伯剋利 POSTGRES 項目的順序,從6.0開始。

  PostgreSQL7.1:PostgreSQL 7.1是繼6.5版本之後又一個有巨大變化的版本,首先它引入瞭預寫式日誌的功能。這樣,事務就擁有瞭完善的日誌機製,可以提供更好的性能,還可以實現更優良的備份和災難恢復的能力(比如聯機熱備份和宕機後的自動恢復)。其次是不再限製文本類型的數據段長度,這從很大程度上解決瞭PostgreSQL大對象的問題。

  Postgres8.X:該版本可以在Windows下運行,它具有一些新的特性。比如具有事務保存點功能、改變字段的類型、錶空間、即時恢復(即時恢復允許對服務器進行連續的備份。既可以恢復到失敗那個點,也可以恢復到以前的任意事務)等功能。並且開始支持Perl 服務器端編程語言。

  PostgreSQL9.X:進入9.X版本,標識著PostgreSQL進入瞭黃金發展階段。2010年9月20日發布瞭PostgreSQL 9.0,大大增強瞭復製的功能(replication),比如增加瞭流復製功能(stream replicaction)和HOT standby功能。從9.0開始,可以很方便地搭建主從數據庫。2011年9月12日發布瞭PostgreSQL9.1,在該版本中增加瞭同步復製功能(synchronous replication);2012年9月10發布瞭PostgreSQL9.2,增加瞭級連復製的功能。

  1.1.3 PostgreSQL數據庫的優勢

  PostgreSQL有以下優勢:

  PostgreSQL數據庫是目前功能最強大的開源數據庫,它是最接近工業標準SQL92的查詢語言,並且正在實現新的功能以兼容最新的SQL標準:SQL2003。

  穩定可靠:PostgreSQL是唯一能做到數據零丟失的開源數據庫。有報道稱國外的部分銀行也在使用PostgreSQL數據庫。

  開源省錢: PostgreSQL數據庫是開源的、免費的,而且是BSD協議,在使用和二次開發上基本沒有限製。

  支持廣泛:PostgreSQL 數據庫支持大量的主流開發語言,包括C、C++、Perl、Python、Java、Tcl,以及PHP等。

  PostgreSQL社區活躍:PostgreSQL基本上每三個月推齣一個補丁版本,這意味著已知的BUG很快會被修復,有應用場景的需求也會及時得到響應。

  1.1.4 PostgreSQL應用現狀和發展趨勢

  PostgreSQL目前在國外很流行,特彆是近幾年使用PostgreSQL數據庫的公司越來越多。比如,日本電信(NTT) 大量使用PostgreSQL替代Oracle數據庫,並且在 PostgreSQL之上二次開發瞭Postgres-XC,Postgres-XC是對使用者完全兼容PostgreSQL接口的share-nothing 架構的數據庫集群。網絡電話公司Skype 也大量使用PostgreSQL,並貢獻瞭一些與PostgreSQL數據庫配套的開源軟件:

  PL/Proxy:PostgreSQL中的數據水平拆分軟件

  pgQ:使用PostgreSQL的消息隊列軟件

  Londiste:用C語言實現的在PostgreSQL數據庫之間進行邏輯同步的軟件

  全球最大的CRM軟件服務提供商Salesforce也開始使用PostgreSQL,並招募瞭PostgreSQL內核開發者Tom lane。

  2012年,美國聯邦機構全麵轉嚮PostgreSQL陣營;法國也正積極推動政府機構采用PostgreSQL數據庫,從而取代商業數據庫。

  在國內,越來越多的公司開始使用PostgreSQL,如斯凱網絡(股票代碼:MOBI)的後颱數據庫基本使用的都是PostgreSQL數據庫,去哪兒網(qunar.com)也大量使用瞭PostgreSQL數據庫。

  主流的雲服務提供商如亞馬遜、阿裏雲的RDS(關係型數據庫服務)同樣提供瞭PostgreSQL的支持。

  更多的使用PostgreSQL數據庫的情況可以見PostgreSQL官方網站(http://www.postgresql.org/about/users/)。

  ……

前言/序言

  為什麼要寫這本書

  PostgreSQL數據庫是目前功能最強大的開源數據庫,它基本包含瞭其他所有商業或開源的數據庫中能找到的功能,甚至還包含瞭一些商業數據庫中沒有的功能。它是最接近工業標準SQL92的查詢語言,並且正在實現新的功能以兼容最新的SQL標準:SQL2003。PostgreSQL也獲得數個奬項,曾三次被評為Linux Journal雜誌編輯評選的“最佳數據庫奬”(2000年、2003年和2004年),並獲2004年度的Linux新媒體最佳數據庫係統奬。

  PostgreSQL目前在國外很流行,特彆是近兩年,使用PostgreSQL數據庫的公司越來越多,如提供網絡電話功能的skype和著名的圖片分享網站Instagram。2012年,美國聯邦機構全麵轉嚮PostgreSQL陣營;法國也正推動政府機構積極采用PostgreSQL數據庫取代商業數據庫;世界最大的CRM軟件服務提供商Salesforce同樣開始大量使用 PostgreSQL。在DB-Engine 發布的曆年數據庫排名中,PostgreSQL自從2013年3月上升到第四名後,一直穩定在第四名,排在很多知名的商業數據庫如DB2、Sybase之前,也排在所有NoSQL數據庫如Cassandra、Redis等之前。

  雖然在國外使用PostgreSQL 數據庫的人很多,但在國內,PostgreSQL中文的學習資料並不多,因此我就想到寫一本關於PostgreSQL的書,讓國內更多的人加入到學習PostgreSQL數據庫的隊伍中來。

  讀者對象

  適閤閱讀本書的用戶:

  數據庫入門者。學習本書和相關的數據庫知識,可以讓一個對數據庫瞭解不是很深的數據庫愛好者成為數據庫專傢。

  非PostgreSQL數據庫的DBA。可以讓非PostgreSQL的DBA 快速掌握PostgreSQL數據庫相關知識,成為一名閤格的PostgreSQL DBA。

  PostgreSQL DBA。本書的一些章節對熟悉PostgreSQL數據庫的DBA也有很大指導作用,可以使讀者的知識更充實。

  開發人員。通過此書可以快速掌握PostgreSQL數據庫方麵的知識,提高開發人員的數據庫水平。

  如何閱讀本書

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

  本書中有大量的例子,讀者邊閱讀此書邊按例子進行實際的操作,將獲得最佳的學習效果。

  勘誤和支持

  由於作者的水平有限,編寫的時間也很倉促,書中難免會齣現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。

  緻謝

  感謝機械工業齣版社華章公司的編輯楊綉國老師,感謝她一年多來始終支持我的寫作,她的鼓勵和幫助引導我能順利完成全部書稿。

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

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

  唐成(osdba)

  中國,杭州,2015年1月



PostgreSQL修煉之道:從小工到專傢 內容簡介 本書是一本麵嚮廣大 PostgreSQL 技術愛好者的深度技術指南,旨在帶領讀者從 PostgreSQL 的基礎知識齣發,逐步深入到核心原理、高級特性、性能優化、安全加固以及集群與高可用等各個層麵,最終達到精通 PostgreSQL 的目標。本書不僅涵蓋瞭 PostgreSQL 的方方麵麵,更注重實戰性和可操作性,通過大量的實例和場景分析,幫助讀者真正掌握 PostgreSQL 的強大功能,成為一名遊刃有餘的 PostgreSQL 專傢。 第一部分:PostgreSQL 基礎入門與核心概念 本部分將為初學者奠定堅實的 PostgreSQL 基礎,幫助他們快速理解 PostgreSQL 的基本架構、安裝配置以及常用操作。 PostgreSQL 概覽與安裝部署: PostgreSQL 的發展曆程、核心優勢與生態圈介紹。 不同操作係統下的 PostgreSQL 安裝與配置詳解(Linux, Windows, macOS)。 PostgreSQL 的版本管理與升級策略。 客戶端工具的選擇與使用(psql, pgAdmin)。 用戶與權限管理的基礎。 SQL 語言基礎與 PostgreSQL 擴展: SQL 標準語法迴顧與 PostgreSQL 特色語法。 數據類型詳解(基本類型、數組、JSON、地理空間等)。 錶的創建、修改與刪除。 數據的插入、查詢、更新與刪除(CRUD 操作)。 PostgreSQL 特有的數據類型和函數應用。 視圖、序列、同義詞的創建與使用。 索引的奧秘: 索引的基本原理與類型(B-tree, Hash, GiST, GIN, SP-GiST)。 索引的選擇原則與最佳實踐。 索引的創建、維護與性能影響分析。 復閤索引、部分索引、覆蓋索引的應用場景。 `EXPLAIN` 與 `EXPLAIN ANALYZE` 解析索引使用情況。 事務與並發控製: ACID 特性詳解。 PostgreSQL 的事務隔離級彆。 MVCC (Multi-Version Concurrency Control) 原理剖析。 鎖的類型與死鎖的檢測與避免。 並發場景下的常見問題及解決方案。 第二部分:PostgreSQL 進階特性與性能優化 本部分將深入挖掘 PostgreSQL 的高級特性,並提供一套係統性的性能優化方法論,幫助讀者充分釋放 PostgreSQL 的潛力。 查詢優化與執行計劃分析: 理解 PostgreSQL 查詢優化器的內部工作機製。 深度解析 `EXPLAIN` 和 `EXPLAIN ANALYZE` 的輸齣。 識彆和解決常見的慢查詢問題。 查詢重寫技巧與子查詢的優化。 窗口函數、公用錶錶達式(CTE)的應用與優化。 存儲引擎與錶空間管理: PostgreSQL 的存儲結構(Tablespace, Database, Schema, Table, Index)。 VACUUM 與 ANALYZE 的作用與原理。 錶空間(Tablespace)的創建與管理,優化數據分布。 分區錶(Partitioning)詳解:聲明式分區與手動分區。 分區策略的選擇與性能提升。 函數、過程與擴展: PL/pgSQL 編程入門與進階。 創建自定義函數、存儲過程和觸發器。 PostgreSQL 的擴展生態:使用第三方擴展增強功能(如 PostGIS, pg_trgm)。 C 語言編寫 PostgreSQL 擴展。 物化視圖與數據倉庫: 物化視圖(Materialized Views)的創建與更新策略。 物化視圖在報錶和數據分析中的應用。 PostgreSQL 在數據倉庫場景下的角色與優化。 第三部分:PostgreSQL 高可用、備份與恢復 本部分將聚焦於 PostgreSQL 的可靠性,包括數據備份、恢復策略以及構建高可用集群的方案。 備份與恢復策略: 邏輯備份(pg_dump)與物理備份(pg_basebackup)的原理與適用場景。 全量備份、增量備份與差異備份。 Point-in-Time Recovery (PITR) 詳解。 `pg_rewind` 的應用。 恢復策略的規劃與測試。 流復製與主從架構: WAL (Write-Ahead Logging) 原理。 流復製(Streaming Replication)的工作機製。 同步復製與異步復製的選擇。 構建 PostgreSQL 主從復製集群。 讀寫分離的實現。 高可用解決方案: PostgreSQL 的高可用性考量。 使用 Patroni, repmgr 等工具實現自動故障轉移。 Pgpool-II 負載均衡與連接池。 Quorum 機製在 HA 集群中的作用。 Active-Passive 與 Active-Active 架構的對比。 第四部分:PostgreSQL 安全加固與監控 本部分將深入探討 PostgreSQL 的安全機製,以及如何進行有效的監控和故障排查。 安全加固: 用戶與角色的細粒度權限控製。 SSL/TLS 加密連接配置。 `pg_hba.conf` 和 `postgresql.conf` 的安全配置。 SQL 注入防護。 審計日誌(Audit Logging)的配置與分析。 數據加密(Column-level encryption, TDE)。 性能監控與故障排查: PostgreSQL 內置監控視圖(`pg_stat_activity`, `pg_stat_statements` 等)。 外部監控工具的應用(Prometheus, Grafana, Zabbix)。 日誌文件的分析與配置。 慢查詢日誌的生成與處理。 係統資源監控(CPU, 內存, 磁盤 I/O)。 常見故障場景的排查思路與技巧。 第五部分:PostgreSQL 實踐案例與架構演進 本部分將通過實際案例,展示 PostgreSQL 在不同場景下的應用,並探討 PostgreSQL 的架構演進方嚮。 實際應用場景剖析: 大型電商平颱的數據庫架構設計。 高並發 Web 應用的 PostgreSQL 優化。 地理信息係統(GIS)的數據管理。 時間序列數據的存儲與查詢。 PostgreSQL 集群與分布式方案: Sharding(數據分片)策略的實現。 Citus Data 等分布式 PostgreSQL 解決方案介紹。 其他第三方分布式解決方案的對比。 PostgreSQL 的未來展望: PostgreSQL 新版本特性預覽。 PostgreSQL 在雲原生時代的機遇與挑戰。 嚮量數據庫與其他技術的融閤。 本書特色: 體係化構建知識框架: 從基礎到精通,層層遞進,構建完整的 PostgreSQL 知識體係。 強調實踐操作: 大量代碼示例、配置片段和命令演示,讓讀者邊學邊練。 深入原理剖析: 不僅知其然,更知其所以然,深入理解 PostgreSQL 核心機製。 場景化問題解決: 結閤實際工作中的常見問題,提供可行的解決方案。 前沿技術追蹤: 涵蓋瞭 PostgreSQL 最新特性和發展趨勢。 麵嚮實戰的高可用與安全: 關注生産環境中最關鍵的環節。 無論您是初入 PostgreSQL 的新手,還是希望在技術深度上有所突破的開發者、DBA,本書都將是您不可或缺的學習夥伴,助力您在 PostgreSQL 的修煉之路上不斷前進,最終成為一名真正意義上的 PostgreSQL 專傢。

用戶評價

評分

作為一名已經有幾年 PostgreSQL 使用經驗的老兵,我一直苦於在日常工作中遇到的性能瓶頸和一些復雜的配置問題。雖然我能夠完成大部分工作,但總感覺自己的技術深度不夠,遇到一些疑難雜癥時,往往需要花費大量時間去查閱零散的文檔或者嚮同事求助。《PostgreSQL修煉之道:從小工到專傢》這本書,恰好彌補瞭我在這方麵的不足。它非常深入地探討瞭 PostgreSQL 的內部工作機製,包括內存管理、查詢優化器、並發控製等核心概念,這些內容對我來說是耳目一新的。書中對索引策略的講解尤其精彩,我從未如此清晰地理解過不同類型索引的適用場景以及如何通過閤理的索引設計來大幅提升查詢效率。我嘗試瞭書中介紹的一些高級調優技巧,比如參數配置的優化和分區策略的運用,確實取得瞭非常顯著的性能提升。這本書的語言風格也非常專業且富有邏輯性,讓我能夠快速抓住重點,並將其應用到實際工作中。它不是那種堆砌概念的教科書,而是真正從解決實際問題的角度齣發,提供瞭切實可行的解決方案。

評分

我是一名資深的數據庫 DBA,在 PostgreSQL 領域摸爬滾打瞭十幾年。接觸過無數的數據庫技術書籍,但《PostgreSQL修煉之道:從小工到專傢》這本書給我留下瞭非常深刻的印象。它並非一本泛泛而談的入門指南,而是以一種極其精煉的方式,深入剖析瞭 PostgreSQL 的核心架構和高級特性。我特彆欣賞作者對於數據庫事務、鎖機製以及復製策略的詳細闡述。這些是保證數據庫高可用性和數據一緻性的關鍵,但往往也是最容易被忽視或者理解不到位的環節。書中對這些內容的講解,既有理論深度,又不乏實踐指導,讓我在迴顧和反思自己過往工作經驗的同時,也找到瞭提升的空間。特彆是關於 PostgreSQL 的擴展機製和插件開發的部分,讓我看到瞭 PostgreSQL 在靈活性和可擴展性方麵的巨大潛力。這本書就像是一位經驗豐富的老友,在嚮我娓娓道來 PostgreSQL 的“內功心法”,讓我受益匪淺。

評分

說實話,我之前對 PostgreSQL 的瞭解僅限於一些基礎的 SQL 操作,對於它的架構和原理知之甚少,總覺得它隻是一個“數據庫軟件”。然而,當我翻開《PostgreSQL修煉之道:從小工到專傢》這本書後,我完全顛覆瞭之前的認知。這本書就像一把鑰匙,為我打開瞭一個全新的世界。它用非常生動形象的比喻,將 PostgreSQL 復雜的內部機製講得通俗易懂,讓我這個“小白”也能夠輕鬆理解。我最喜歡的部分是關於數據庫的物理存儲結構和邏輯存儲結構的講解,讓我第一次明白數據是如何存儲在磁盤上的,又是如何被組織起來的。書中的插圖和圖錶也非常精美,極大地幫助瞭我理解抽象的概念。我甚至嘗試著去分析一些慢查詢日誌,並根據書中的指導進行優化,竟然真的看到瞭效果!這本書的寫作風格非常接地氣,沒有那些晦澀難懂的術語,更多的是一種循循善誘的感覺,讓我充滿瞭學習的動力。

評分

這本書真是太棒瞭!我是一名剛入行不久的 PostgreSQL 開發者,一直以來都感覺自己在數據庫方麵像是摸著石頭過河,遇到問題時總是手忙腳亂,缺乏係統性的知識體係。翻開《PostgreSQL修煉之道:從小工到專傢》這本書,簡直像是遇到瞭救星!它從最基礎的概念講起,循序漸進,一點一點地把我帶進瞭 PostgreSQL 的世界。我特彆喜歡它對於各種 SQL 語句的講解,不僅給齣瞭清晰的語法,還深入剖析瞭它們在實際應用中的運行原理和性能考量。書裏有很多實用的例子,我跟著書中的步驟一步步操作,感覺自己對數據庫的理解一下子提升瞭好幾個檔次。以前覺得 PostgreSQL 隻是一個工具,現在我纔意識到它背後蘊含的深厚技術。這本書讓我明白瞭,要想真正掌握一門技術,光是會用是不夠的,還需要深入理解它的方方麵麵。我甚至開始主動去研究它的執行計劃,優化查詢語句,這一切都得益於這本書打下的堅實基礎。它不僅教會瞭我“怎麼做”,更重要的是教會瞭我“為什麼這麼做”,這種融會貫通的感覺真的非常棒。

評分

作為一名專注於 PostgreSQL 性能優化的技術顧問,我一直在尋找一本能夠係統性梳理 PostgreSQL 性能調優體係的書籍。《PostgreSQL修煉之道:從小工到專傢》這本書,無疑是我近年來遇到的最優秀的一本。它不僅僅局限於基礎的 SQL 優化,而是從更宏觀的層麵,深入剖析瞭 PostgreSQL 在硬件、操作係統、網絡以及數據庫自身參數配置等各個環節的影響因素。書中的關於查詢計劃的深度解析,對我來說是極具價值的。我以前更多地是憑藉經驗去調整,而這本書則用嚴謹的邏輯和大量的實驗數據,證明瞭各種優化手段背後的原理。特彆是關於鎖競爭、VACUUM 機製的優化策略,以及如何根據不同的業務場景來設計最優的索引方案,都讓我茅塞頓開。這本書的寫作方式嚴謹且富有洞察力,為我提供瞭一個全新的視角來審視 PostgreSQL 的性能瓶頸。我強烈推薦給所有希望在 PostgreSQL 性能調優領域有所建樹的技術人員。

評分

書看著還不錯

評分

很好很有用,又不貴。大傢夥趕緊來買吧~~是很有價值的。

評分

活到老學到老

評分

很好很有用,又不貴。大傢夥趕緊來買吧~~是很有價值的。

評分

東西不錯,快遞速度也很快。不錯,不錯,不錯!

評分

書介紹瞭postgres的基礎知識和使用方法,閱讀中

評分

書不錯…………

評分

評分

講的不錯,有活動,價格也美麗

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有