-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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 9X之巔(原書第2版)

( 簡體 字)
作者:〔美〕 艾博拉·艾哈邁德(Ibrar Ahmed)格利高里·史密斯(Gregory Smith) 著類別:1. -> 資料庫 -> PostgreSQL
譯者:
出版社:機械工業出版社PostgreSQL 9X之巔(原書第2版) 3dWoo書號: 48974
詢問書籍請說出此書號!

缺書
NT售價: 445

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

譯者序:

前言:

無論是傳統的企業型應用,還是當下的Web應用,作為一種數據庫平臺,PostgreSQL在為這些應用程序提供數據存儲服務方面的可行性日趨成熟。不過,要想獲取PostgreSQL的最佳性能,一直以來都并非易事。用戶需遵循適宜的經驗法則,需持續監控和維護以保障數據庫系統健康運行,需以合理化建議定位和處理當前問題,需對數據庫相關的附件工具有所涉獵,以便遇到核心數據庫無法解決的問題時,可以為其進行功能擴展。

本書內容概述

第1章介紹了PostgreSQL最近幾個版本的性能改進情況。通常,人們認為所有軟件的新版本會問題百出,而且會比以前的版本運行得更慢,但PostgreSQL不存在這個問題。

第2章討論了如何仔細挑選服務器硬件中的主要部件,包括處理器、內存以及磁盤等,在預算允許的情況下如何組建一個穩定可靠的數據庫存儲服務器。特別是在磁盤控制器和驅動器方面,如果誤用了易失性回寫緩存,很容易導致數據庫損壞。

第3章討論了不同數據庫硬件性能方面的量化標準。比如在你的系統當中,內存讀取到底有多快?磁盤的原始性能有多強?在添加更多的磁盤后,數據庫性能是否能正常按比例提升?

第4章研究現行文件系統的可選方案,并就如何權衡硬盤中數據庫的不同布局提出建議。同時也討論了一些常見的有效文件系統的調優問題。

第5章深入研究了數據庫在磁盤、內存中的存儲機制,并解釋了checkpoint進程是如何協調這兩種存儲機制以保證數據安全的。此外,該章還討論了如何深入查看數據庫所緩存的數據,以及在此基礎上,確認當下存儲在系統內存里的數據與你的預期數據是否一致。

第6章涵蓋了postgresql.conf文件中的最重要的一些設置選項,介紹了這些選項的含義以及如何設置這些選項。此外,也指出了可能會引起問題的設置。

第7章首先闡釋了PostgreSQL如何判定哪些行數據對哪些用戶可見。這些可見性信息的存儲方法需要一個名為VACUUM的清理進程來正常地重新使用剩余空間。此外,該章也涉及了一些常見問題以及針對這些問題的調節方式,也涵蓋了一直運行的autovacuum。最后,該章介紹了數據庫日志的數據量調節方式,以及如何使用查詢日志分析器對結果進行分析,從而幫助用戶找出查詢瓶頸。

第8章研究如何使用PostgreSQL自帶的pgbench測試程序來獲取有用的基準評測結果。

第9章介紹索引在響應查詢時是如何減少數據塊的讀取量的。這種方法可以徹底探索一些常見問題,比如為什么一個查詢會使用順序掃描而不是使用強大的索引掃描。

第10章是PostgreSQL optimizer(優化器)指南,根據一些查詢例子的不同執行方式以及數據庫參數的不同設置,來說明數據庫的不同優化方式。

第11章介紹了數據庫內部所收集的統計信息,以及哪些信息有助于查找問題。同時,也介紹了能夠讓你看到查詢活動以及鎖行為的一些視圖。

第12章先介紹了如何使用操作系統所提供的基本監視工具以確定數據庫的當前動作。然后,該章針對可按照時間對信息趨勢進行圖形化表示的軟件給出了建議。

第13章對在同一時間內對數據庫進行大量連接時所遇到的困難進行了說明。同時,建議使用兩種軟件包——連接池(以更好地對請求進行排序)和緩存(在不連接數據庫的情況下響應用戶請求)——來幫助解決這些問題。

第14章講述了如何通過跨節點復制數據來減輕數據庫的負載壓力,典型的解決方式是,多個同步只讀的從節點搭配一個可讀寫的主節點。

第15章探討如何有效地將數據劃分為子集,這樣可以在數據庫的一小部分上執行查詢。所討論的方法包括單節點數據庫表分區和使用PL/Proxy及其相關工具集來構建跨多節點的共享數據庫。

第16章探討那些在PostgreSQL中看起來阻礙初學者使用的部分。重點是如何找到代碼不工作的原因,以及有哪些現有工具可以幫助診斷問題。

第17章以統計記錄數和外鍵處理作為例子,涵蓋了所有批量導入部分。同時,該章還包括人們使用PostgreSQL時所遇到的常見問題。

第18章詳細介紹了從PostgreSQL 8.1到9.6各個版本中與性能相關的功能變化情況。有時,避免常見問題并獲得更好性能的最佳方式就是升級到不再存在問題的新版本。

你需要為閱讀本書準備什么

為了更好地利用本書,你至少需要一個能夠連接服務器并執行查詢的PostgreSQL客戶端。理想情況下,你最好也是服務器管理員。
本書讀者

本書適用于那些使用或計劃使用PostgreSQL的中高級數據庫管理員和開發人員。系統管理員可以在安裝、配置和監視數據庫服務器方面受益。本書對開發人員在編寫最佳查詢并在其數據庫設計中檢測性能問題方面也會有所幫助。同時,本書也有利于PostgreSQL內部架構師使用基準評測工具監控性能。
內容簡介:

數據庫管理員和開發人員需要花費數年的時間來學習各種技術,以配置他們的PostgreSQL數據庫服務器,從而獲得最佳性能,特別是當他們遇到實際性能問題的時候。本書將向你展示如何使用PostgreSQL 9.6來配置新安裝的數據庫和優化現有的數據庫服務器。

本書首先介紹數據庫性能的基本概念,你不僅可以學習如何優化數據庫及查詢來獲得最佳性能,還可以了解如何使用PostgreSQL工具和一些拓展工具來檢測實際的性能瓶頸。接下來,你將學習如何對硬件進行基準評測并優化操作系統,以及如何借助正確的索引,并監視從硬件底層到查詢本身的每層情況,來優化對數據庫的查詢。然后,你將了解連接池、緩存、分區和復制是如何幫助用戶處理日益增加的數據庫工作負載的。

實現高性能數據庫并不容易,但是你可以通過本書學習到這些知識。
目錄:

贊譽
推薦序
譯者序
譯者簡介
中文版序
關于作者
關于審校者
前言
第1章 PostgreSQL版本 1
1.1 PostgreSQL歷代版本的性能 2
1.1.1 選擇要部署的版本 3
1.1.2 升級到一個新的主版本 3
1.2 選擇PostgreSQL還是其他數據庫 4
1.3 PostgreSQL工具 5
1.3.1 PostgreSQL contrib 5
1.3.2 pgFoundry 8
1.3.3 其他PostgreSQL相關軟件 8
1.4 PostgreSQL應用程序的擴展生命周期 8
1.5 在實踐中做性能優化 9
1.6 小結 10
第2章 數據庫硬件 11
2.1 平衡硬件支出 11
2.1.1 CPU 11
2.1.2 內存 13
2.1.3 磁盤 13
2.1.4 磁盤控制器 17
2.2 可靠的控制器及磁盤安裝 21
2.2.1 驅動器可靠性研究 21
2.2.2 回寫緩存 22
2.2.3 直寫式緩存的性能影響 25
2.3 小結 25
第3章 數據庫硬件的基準評測 27
3.1 CPU和內存基準評測 27
3.1.1 Memtest86+ 28
3.1.2 STREAM內存測試 28
3.1.3 CPU基準評測 29
3.1.4 內存及處理器速度慢的根源 31
3.2 物理磁盤的性能 32
3.2.1 隨機存取和IOPS 32
3.2.2 順序存取和ZCAV 33
3.2.3 提交率 34
3.3 硬盤基準評測工具 34
3.3.1 使用HD Tune進行硬盤基準評測 35
3.3.2 磁盤順序讀寫吞吐量 38
3.3.3 Bonnie++ 38
3.3.4 sysbench 42
3.3.5 尋道速率 43
3.3.6 復雜磁盤基準評測 45
3.4 樣品磁盤測試結果 45
3.5 小結 48
第4章 磁盤設置 50
4.1 文件系統最大值 50
4.2 文件系統的崩潰恢復 51
4.3 Linux文件系統 52
4.3.1 ext2 52
4.3.2 ext3 53
4.3.3 ext4 54
4.3.4 XFS 55
4.3.5 其他Linux文件系統 56
4.3.6 寫入屏障 56
4.3.7 常規Linux文件系統調優 58
4.4 Solaris與FreeBSD文件系統 62
4.4.1 Solaris UFS 62
4.4.2 FreeBSD UFS2 64
4.4.3 ZFS 64
4.4.4 FAT32 66
4.4.5 NTFS 66
4.5 PostgreSQL的磁盤布局 67
4.5.1 符號鏈接 67
4.5.2 表空間 67
4.5.3 數據庫目錄樹 68
4.5.4 磁盤陣列、RAID和磁盤布局 69
4.6 小結 71
第5章 數據庫緩存內存 72
5.1 postgresql.conf中的內存單位 72
5.2 增加UNIX共享內存參數以增大共享內存塊 73
5.2.1 內核信號量 74
5.2.2 估算共享內存塊的分配 75
5.2.3 檢查數據庫緩存 76
5.2.4 在數據庫中安裝pg_buffercache模塊 76
5.2.5 數據庫磁盤布局 77
5.2.6 在數據庫中創建新塊 80
5.2.7 寫臟塊到磁盤 80
5.3 崩潰恢復和緩沖區緩存 81
5.3.1 檢查點處理基礎 81
5.3.2 預寫日志和恢復處理 81
5.3.3 檢查點的時間選擇 82
5.3.4 數據庫塊的生命周期 84
5.4 數據庫緩存與操作系統緩存對比 85
5.4.1 雙重緩存數據 85
5.4.2 檢查點開銷 86
5.4.3 起始大小指導 86
5.5 分析緩存內容 87
5.5.1 檢查緩沖區緩存查詢 88
5.5.2 使用緩沖區緩存檢查來調整反饋 91
5.6 小結 92
第6章 服務器配置調優 93
6.1 與實時配置交互 93
6.1.1 默認值和重置值 94
6.1.2 允許更改的上下文信息 94
6.1.3 重新加載配置文件 95
6.1.4 數據庫連接 97
6.1.5 共享內存 98
6.1.6 日志記錄 98
6.1.7 Vacuuming和統計 100
6.1.8 檢查點 101
6.1.9 PITR和WAL復制 103
6.1.10 調整以防患于未然 106
6.2 小結 109
第7章 日常維護 110
7.1 事務可見性與多版本并發控制 110
7.1.1 可見性的內部計算 111
7.1.2 更新 111
7.1.3 行鎖的沖突 113
7.1.4 刪除操作 114
7.1.5 MVCC的優點 115
7.1.6 MVCC的缺點 115
7.1.7 事務ID重疊 116
7.2 vacuum 117
7.2.1 vacuum實現 117
7.2.2 基于開銷的vacuum 119
7.2.3 autovacuum 120
7.2.4 vacuum和autovacuum的常見問題 123
7.3 自動分析 126
7.4 索引膨脹 127
7.4.1 測定索引膨脹 127
7.4.2 修復索引膨脹 128
7.5 轉儲和恢復 129
7.6 清空數據庫/表 129
7.7 CLUSTER命令 129
7.8 重建索引 130
7.9 詳細數據和索引頁的監控 131
7.10 監控查詢日志 131
7.10.1 基本的PostgreSQL日志設置 131
7.10.2 對棘手的查詢進行日志記錄 134
7.10.3 日志文件分析 136
7.11 小結 140
第8章 數據庫基準評測 141
8.1 pgbench默認測試 141
8.1.1 表的定義 141
8.1.2 規模檢測 143
8.1.3 查詢腳本定義 143
8.1.4 為pgbench配置數據庫服務器 145
8.2 使用pgbench-tools圖形化輸出結果 147
8.3 pgbench測試結果樣例 148
8.3.1 只讀測試 148
8.3.2 類TPC-B測試(讀、寫) 149
8.3.3 延遲分析 150
8.4 導致不良結果以及變化的緣由 152
8.4.1 PostgreSQL開發人員模式 153
8.4.2 worker線程和pgbench程序的限制 154
8.5 自定義pgbench測試 154
8.6 TPC基準評測 155
8.7 小結 156
第9章 數據庫索引 157
9.1 索引例子詳解 158
9.1.1 測量查詢的磁盤和索引塊統計信息 158
9.1.2 運行例子 159
9.1.3 例子數據設置 159
9.1.4 簡單索引查找 160
9.1.5 全表掃描 161
9.1.6 索引創建 162
9.1.7 用低效的索引查找 163
9.1.8 聯合索引 164
9.1.9 依靠索引聚簇 166
9.1.10 帶有緩沖區計數的EXPLAIN 167
9.2 索引創建和維護 168
9.2.1 唯一索引 168
9.2.2 并發創建索引 169
9.2.3 對索引聚簇 169
9.2.4 重建索引 170
9.3 索引類型 170
9.3.1 B-tree 170
9.3.2 哈希 171
9.3.3 GIN 171
9.3.4 GiST 172
9.3.5 SP-GiST 172
9.3.6 BRIN 172
9.3.7 僅索引掃描 173
9.4 count(*) 174
9.5 可見性映射 175
9.6 高級索引使用 175
9.6.1 多列索引 175
9.6.2 索引用于排序 175
9.6.3 部分索引 176
9.6.4 基于表達式的索引 176
9.6.5 索引用于全文搜索 176
9.7 小結 177
第10章 查詢優化 178
10.1 樣例數據集 178
10.1.1 Pagila 179
10.1.2 Dell Store 2 179
10.2 EXPLAIN基礎 180
10.2.1 計時開銷 181
10.2.2 冷熱緩存行為 181
10.3 執行計劃節點結構 183
10.3.1 基本代價計算 184
10.3.2 可視化解釋 185
10.3.3 詳細輸出 186
10.3.4 機器可讀的解釋輸出 186
10.3.5 規劃分析工具 188
10.4 組裝行集合 188
10.4.1 元組ID 188
10.4.2 順序掃描 189
10.4.3 索引掃描 189
10.4.4 僅索引掃描 190
10.4.5 位圖堆掃描和索引掃描 190
10.5 處理節點 191
10.5.1 排序 191
10.5.2 Limit 192
10.5.3 聚集 193
10.5.4 HashAggregate 194
10.5.5 唯一 194
10.5.6 Result 195
10.5.7 Append 195
10.5.8 Group 196
10.5.9 子查詢掃描和子計劃 197
10.5.10 集合操作 198
10.5.11 物化 199
10.6 CTE掃描 199
10.7 copy命令 199
10.7.1 COPY TO 200
10.7.2 COPY FROM 200
10.7.3 COPY FREEZE 200
10.8 連接 201
10.8.1 嵌套循環 201
10.8.2 歸并連接 203
10.8.3 哈希連接 204
10.8.4 連接順序 205
10.9 收集統計信息 207
10.9.1 查看和使用統計信息 207
10.9.2 統計信息目標 210
10.9.3 難以估算的部分 211
10.10 其他查詢規劃參數 211
10.10.1 effective_cache_size 212
10.10.2 work_mem 212
10.10.3 constraint_exclusion 213
10.10.4 cursor_tuple_fraction 213
10.11 執行其他語句類型 214
10.12 改進查詢 214
10.12.1 優化完全緩存的數據集 214
10.12.2 查詢等價測試 215
10.12.3 禁用優化器特性 215
10.12.4 優化器缺陷的解決方案 218
10.12.5 用OFFSET避免計劃重構 219
10.12.6 外部故障點 220
10.13 SQL的限制 221
10.13.1 在SQL中對數據行進行編號 221
10.13.2 使用窗口函數編號 222
10.13.3 使用窗口函數進行累計 222
10.14 小結 223
第11章 數據庫活動和統計信息 224
11.1 統計信息視圖 224
11.2 累積視圖和實時視圖 226
11.3 表統計信息 227
11.4 索引統計信息 230
11.5 數據庫級別的匯總 231
11.6 連接與行為 232
11.7 鎖 232
11.7.1 虛擬事務 233
11.7.2 解碼鎖信息 234
11.7.3 表級鎖的模式 236
11.7.4 事務鎖等待 236
11.7.5 表的鎖等待 237
11.7.6 記錄鎖信息 238
11.7.7 保存pg_stat_bgwriter快照 242
11.7.8 通過后臺寫入進程的統計信息進行調優 243
11.8 小結 245
第12章 監控和趨勢預測 247
12.1 UNIX監控工具 247
12.1.1 例子設置 247
12.1.2 vmstat 248
12.1.3 iostat 250
12.1.4 top 257
12.1.5 SysStat和sar 258
12.2 Windows監控工具 260
12.2.1 任務管理器 260
12.2.2 Windows系統監控器 261
12.3 趨勢分析軟件 262
12.3.1 監控和趨勢分析軟件類型 263
12.3.2 Nagios 264
12.3.3 Cacti 265
12.3.4 Munin 265
12.3.5 其他趨勢分析軟件包 266
12.4 小結 268
第13章 連接池和緩存 269
13.1 連接池技術 269
13.1.1 連接池中的連接數 270
13.1.2 pgpool-II 271
13.1.3 連接池 271
13.1.4 復制 271
13.1.5 看門狗 271
13.1.6 故障切換 272
13.1.7 負載均衡 272
13.1.8 pgBouncer 273
13.1.9 memcached是什么 274
13.1.10 pgmemcache 275
13.2 小結 275
第14章 擴展復制 277
14.1 熱備份 277
14.1.1 專用術語 278
14.1.2 設置WAL文件傳送 279
14.1.3 流復制 279
14.1.4 級聯復制 279
14.1.5 同步復制 279
14.1.6 熱備份調優 280
14.2 復制隊列管理器 281
14.2.1 Slony 281
14.2.2 Londiste 282
14.2.3 使用復制隊列軟件進行讀取擴展 282
14.2.4 特殊的應用程序需求 282
14.2.5 Bucardo 283
14.2.6 pglogical 283
14.2.7 xDB 283
14.2.8 pgpool-II 283
14.3 其他有趣的復制相關的項目 284
14.4 復制方案對比 285
14.5 小結 285
第15章 分區數據 286
15.1 表繼承 286
15.2 dellstore2數據庫 287
15.3 PostgreSQL中的分區技術 288
15.4 范圍分區 288
15.5 確定要進行分區的關鍵字段 289
15.6 調整分區大小 290
15.7 重定向INSERT語句至分區 290
15.7.1 動態的觸發器函數 291
15.7.2 分區規則 292
15.8 空分區的查詢規則 293
15.9 修改日期的UPDATE觸發器 293
15.10 實時遷移分區表 294
15.11 分區查詢 296
15.12 創建新的分區 297
15.12.1 定期創建分區 297
15.12.2 動態創建分區 297
15.13 分區的優勢 298
15.14 分區中的常見錯誤 298
15.15 使用PL/Proxy水平分區 299
15.15.1 哈希生成 300
15.15.2 使用PL/Proxy擴展 301
15.15.3 使用GridSQL擴展 302
15.16 小結 302
第16章 數據庫性能分析 304
16.1 使用gprof進行性能分析 304
16.2 使用OProf?ile進行性能分析 305
16.3 使用Valgrind進行調試 306
16.4 Visual Studio 306
16.5 使用DTrace進行性能分析 307
16.5.1 FreeBSD中的DTrace 307
16.5.2 Linux中SystemTap的DTrace仿真 307
16.6 小結 308
第17章 避免常見問題 309
17.1 批量加載 309
17.1.1 加載方式 309
17.1.2 批量加載調優 310
17.1.3 省略預寫式日志加速 311
17.1.4 重建索引和添加約束 312
17.1.5 并行恢復 312
17.1.6 加載后清理 313
17.2 常見性能問題 313
17.2.1 計算行數 313
17.2.2 不明寫入 314
17.2.3 慢函數和預處理語句執行 315
17.2.4 PL/pgSQL基準評測 315
17.2.5 高外鍵開銷 316
17.2.6 觸發內存使用 317
17.2.7 過重的統計收集器開銷 317
17.2.8 物化視圖 318
17.3 小結 318
第18章 發行版本性能特征 319
18.1 積極升級PostgreSQL版本 319
18.2 版本8.1中的性能特征 320
18.3 版本8.2中的性能特征 320
18.4 版本8.3中的性能特征 321
18.5 版本8.4中的性能特征 322
18.6 版本9.0中的性能特征 324
18.6.1 復制 324
18.6.2 查詢和EXPLAIN 324
18.6.3 數據庫開發 325
18.6.4 設置和監控 326
18.7 版本9.1中的性能特征 328
18.8 版本9.2中的性能特征 328
18.9 版本9.3中的性能特征 329
18.10 版本9.4中的性能特征 329
18.11 版本9.5中的性能特征 330
18.12 版本9.6中的性能特征 330
18.13 小結 331
序: