Contents?目 錄
贊譽
推薦序
譯者序
譯者簡介
中文版序
關于作者
關于審校者
前言
第1章 PostgreSQL版本 1
1.1 PostgreSQL歷代版本的性能 2
1.1.1 選擇要部署的版本 3
1.1.2 升級到一個新的主版本 3
1.2 選擇PostgreSQL還是其他數(shù)據庫 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 在實踐中做性能優(yōu)化 9
1.6 小結 10
第2章 數(shù)據庫硬件 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章 數(shù)據庫硬件的基準評測 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 文件系統(tǒng)最大值 50
4.2 文件系統(tǒng)的崩潰恢復 51
4.3 Linux文件系統(tǒng) 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文件系統(tǒng) 56
4.3.6 寫入屏障 56
4.3.7 常規(guī)Linux文件系統(tǒng)調優(yōu) 58
4.4 Solaris與FreeBSD文件系統(tǒng) 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 數(shù)據庫目錄樹 68
4.5.4 磁盤陣列、RAID和磁盤布局 69
4.6 小結 71
第5章 數(shù)據庫緩存內存 72
5.1 postgresql.conf中的內存單位 72
5.2 增加UNIX共享內存參數(shù)以增大共享內存塊 73
5.2.1 內核信號量 74
5.2.2 估算共享內存塊的分配 75
5.2.3 檢查數(shù)據庫緩存 76
5.2.4 在數(shù)據庫中安裝pg_buffercache模塊 76
5.2.5 數(shù)據庫磁盤布局 77
5.2.6 在數(shù)據庫中創(chuàng)建新塊 80
5.2.7 寫臟塊到磁盤 80
5.3 崩潰恢復和緩沖區(qū)緩存 81
5.3.1 檢查點處理基礎 81
5.3.2 預寫日志和恢復處理 81
5.3.3 檢查點的時間選擇 82
5.3.4 數(shù)據庫塊的生命周期 84
5.4 數(shù)據庫緩存與操作系統(tǒng)緩存對比 85
5.4.1 雙重緩存數(shù)據 85
5.4.2 檢查點開銷 86
5.4.3 起始大小指導 86
5.5 分析緩存內容 87
5.5.1 檢查緩沖區(qū)緩存查詢 88
5.5.2 使用緩沖區(qū)緩存檢查來調整反饋 91
5.6 小結 92
第6章 服務器配置調優(yōu) 93
6.1 與實時配置交互 93
6.1.1 默認值和重置值 94
6.1.2 允許更改的上下文信息 94
6.1.3 重新加載配置文件 95
6.1.4 數(shù)據庫連接 97
6.1.5 共享內存 98
6.1.6 日志記錄 98
6.1.7 Vacuuming和統(tǒng)計 100
6.1.8 檢查點 101
6.1.9 PITR和WAL復制 103
6.1.10 調整以防患于未然 106
6.2 小結 109
第7章 日常維護 110
7.1 事務可見性與多版本并發(fā)控制 110
7.1.1 可見性的內部計算 111
7.1.2 更新 111
7.1.3 行鎖的沖突 113
7.1.4 刪除操作 114
7.1.5 MVCC的優(yōu)點 115
7.1.6 MVCC的缺點 115
7.1.7 事務ID重疊 116
7.2 vacuum 117
7.2.1 vacuum實現(xiàn) 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 清空數(shù)據庫/表 129
7.7 CLUSTER命令 129
7.8 重建索引 130
7.9 詳細數(shù)據和索引頁的監(jiān)控 131
7.10 監(jiān)控查詢日志 131
7.10.1 基本的PostgreSQL日志設置 131
7.10.2 對棘手的查詢進行日志記錄 134
7.10.3 日志文件分析 136
7.11 小結 140
第8章 數(shù)據庫基準評測 141
8.1 pgbench默認測試 141
8.1.1 表的定義 141
8.1.2 規(guī)模檢測 143
8.1.3 查詢腳本定義 143
8.1.4 為pgbench配置數(shù)據庫服務器 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開發(fā)人員模式 153
8.4.2 worker線程和pgbench程序的限制 154
8.5 自定義pgbench測試 154
8.6 TPC基準評測 155
8.7 小結 156
第9章 數(shù)據庫索引 157
9.1 索引例子詳解 158
9.1.1 測量查詢的磁盤和索引塊統(tǒng)計信息 158
9.1.2 運行例子 159
9