第1章 性能調(diào)整概述 1
1.1 性能概述 2
1.2 性能評估 4
1.3 建立性能目標(biāo) 7
1.4 什么時(shí)候需要做性能調(diào)整 8
1.5 性能調(diào)整準(zhǔn)則 9
1.6 性能調(diào)整的方法和過程 10
1.6.1 性能調(diào)整的步驟 10
1.6.2 性能調(diào)整的限制 11
1.6.3 向客戶了解情況 11
1.6.4 性能調(diào)整流程圖 12
1.7 性能模型 15
1.7.1 輸入 17
1.7.2 處理 17
1.7.3 輸出 23
1.8 本章小結(jié) 24
第2章 操作系統(tǒng)及存儲(chǔ)的性能調(diào)優(yōu) 27
2.1 AIX性能監(jiān)控綜述 29
2.1.1 監(jiān)控工具 29
2.1.2 監(jiān)控系統(tǒng)總體運(yùn)行狀態(tài) 30
2.1.3 監(jiān)控CPU性能 34
2.1.4 監(jiān)控內(nèi)存使用 38
2.1.5 監(jiān)控存儲(chǔ)系統(tǒng)狀態(tài) 40
2.1.6 監(jiān)控網(wǎng)絡(luò)狀態(tài) 42
2.2 操作系統(tǒng)性能優(yōu)化 43
2.2.1 直接I/O和并發(fā)I/O 44
2.2.2 異步I/O和同步I/O 45
2.2.3 minpout和maxpout 47
2.2.4 文件系統(tǒng)和裸設(shè)備 47
2.2.5 負(fù)載均衡及條帶化(Striping) 48
2.3 邏輯卷和lvmo優(yōu)化 53
2.3.1 使用lvmo進(jìn)行優(yōu)化 54
2.3.2 卷組pbuf池 55
2.3.3 pbuf設(shè)置不合理導(dǎo)致性能
問題調(diào)整案例 56
2.3.4 使用ioo進(jìn)行優(yōu)化 59
2.4 操作系統(tǒng)性能調(diào)整總結(jié) 64
2.5 存儲(chǔ)I/O設(shè)計(jì) 65
2.6 存儲(chǔ)基本概念 65
2.6.1 硬盤 65
2.6.2 磁盤陣列技術(shù) 67
2.6.3 存儲(chǔ)的Cache 67
2.6.4 網(wǎng)絡(luò)存儲(chǔ)技術(shù) 68
2.7 存儲(chǔ)架構(gòu) 69
2.7.1 存儲(chǔ)I/O處理過程 69
2.7.2 RAID IOPS 70
2.7.3 RAID 10和RAID 5的比較 71
2.8 良好存儲(chǔ)規(guī)劃的目標(biāo) 74
2.9 良好存儲(chǔ)規(guī)劃的設(shè)計(jì)原則 75
2.10 存儲(chǔ)相關(guān)性能調(diào)整案例 76
2.11 存儲(chǔ)I/O性能調(diào)整總結(jié) 79
2.12 本章小結(jié) 80
第3章 DB2性能監(jiān)控 81
3.1 快照監(jiān)視器案例 81
3.1.1 監(jiān)控動(dòng)態(tài)SQL語句 81
3.1.2 監(jiān)控臨時(shí)表空間使用 84
3.2 事件監(jiān)視器及監(jiān)控案例 87
3.3 利用表函數(shù)監(jiān)控 93
3.4 性能管理視圖及案例 97
3.4.1 監(jiān)控緩沖池命中率 99
3.4.2 監(jiān)控Package Cache大小 100
3.4.3 監(jiān)控執(zhí)行成本最高的SQL
語句 100
3.4.4 監(jiān)控運(yùn)行時(shí)間最長的SQL
語句 101
3.4.5 監(jiān)控SQL準(zhǔn)備和預(yù)編譯
時(shí)間最長的SQL語句 101
3.4.6 監(jiān)控執(zhí)行次數(shù)最多的SQL
語句 102
3.4.7 監(jiān)控排序次數(shù)最多的SQL
語句 103
3.4.8 監(jiān)控鎖等待時(shí)間 103
3.4.9 監(jiān)控Lock Chain 103
3.4.10 監(jiān)控鎖內(nèi)存的使用 106
3.4.11 監(jiān)控鎖升級、死鎖和
鎖超時(shí) 107
3.4.12 監(jiān)控全表掃描的SQL 108
3.4.13 檢查頁清理器是否足夠 108
3.4.14 監(jiān)控prefecher是否足夠 109
3.4.15 監(jiān)控?cái)?shù)據(jù)庫內(nèi)存使用 110
3.4.16 監(jiān)控日志使用情況 111
3.4.17 監(jiān)控占用日志空間最舊的
事務(wù) 111
3.4.18 監(jiān)控存儲(chǔ)路徑 112
3.4.19 追蹤監(jiān)控歷史 113
3.5 db2pd 113
3.5.1 常用db2pd監(jiān)控選項(xiàng)和
示例 114
3.5.2 使用db2pd監(jiān)控死鎖
案例 126
3.5.3 db2pd使用問題總結(jié) 132
3.6 內(nèi)存監(jiān)控 133
3.6.1 db2pd 內(nèi)存監(jiān)控 133
3.6.2 db2mtrk 內(nèi)存監(jiān)控 137
3.7 本章小結(jié) 139
第4章 DB2配置參數(shù)調(diào)整 141
4.1 初識(shí)DB2配置參數(shù) 141
4.2 監(jiān)控和調(diào)優(yōu)實(shí)例級(DBM)
配置參數(shù) 143
4.2.1 代理程序相關(guān)配置參數(shù) 143
4.2.2 sheapthres 145
4.2.3 fcm_num_buffers 145
4.2.4 sheapthres_shr 146
4.2.5 intra_parallel 146
4.2.6 mon_heap_sz 147
4.3 監(jiān)控和調(diào)優(yōu)數(shù)據(jù)庫級配置
參數(shù) 147
4.3.1 緩沖池大小 147
4.3.2 日志緩沖區(qū)大小(logbufsz) 152
4.3.3 應(yīng)用程序堆大小
(applheapsz) 153
4.3.4 sortheap和sheapthres_shr 154
4.3.5 鎖相關(guān)配置參數(shù) 157
4.3.6 活動(dòng)應(yīng)用程序的最大數(shù)目
(maxappls) 160
4.3.7 pckcachesz 161
4.3.8 catalogcache_sz 161
4.3.9 異步頁清除程序的數(shù)目
(num_iocleaners) 161
4.3.10 異步I/O服務(wù)器的數(shù)目
(num_ioservers) 163
4.3.11 avg_appls 163
4.3.12 chngpgs_thresh(DB) 164
4.3.13 maxfilop 164
4.3.14 logprimary、logsecond和
logfilsz 164
4.3.15 stmtheap 165
4.3.16 dft_queryopt 165
4.3.17 util_heap_sz (DB) 165
4.4 調(diào)整DB2概要注冊變量 166
4.4.1 db2_parallel_io 166
4.4.2 db2_evaluncommitted 168
4.4.3 db2_skipdeleted 168
4.4.4 db2_skipinserted 168
4.4.5 db2_use_page_container_tag 168
4.4.6 db2_selectivity 169
4.4.7 db2maxfscrsearch 169
4.5 內(nèi)存自動(dòng)調(diào)優(yōu) 169
4.5.1 內(nèi)存自動(dòng)調(diào)優(yōu)示例 170
4.5.2 啟用內(nèi)存自動(dòng)調(diào)優(yōu)及
相關(guān)參數(shù) 171
4.5.3 內(nèi)存配置參數(shù)的配置原則 173
4.6 本章小結(jié) 174
第5章 鎖和并發(fā) 175
5.1 鎖的概念 176
5.1.1 數(shù)據(jù)一致性 176
5.1.2 事務(wù)和事務(wù)邊界 176
5.1.3 鎖的概念 178
5.2 鎖的屬性、策略及模式 183
5.2.1 鎖的屬性 183
5.2.2 加鎖策略 183
5.2.3 鎖的模式 184
5.2.4 如何獲取鎖 186
5.2.5 鎖的兼容性 188
5.3 隔離級別(Isolation Levels) 189
5.3.1 可重復(fù)讀(RR—Repeatable
Read) 189
5.3.2 讀穩(wěn)定性(RS—Read
Stability) 191
5.3.3 游標(biāo)穩(wěn)定性(CS—Cursor
Stability) 192
5.3.4 當(dāng)前已提交(Currently
Committed) 194
5.3.5 未提交讀(UR—Uncommitted
Read) 194
5.3.6 隔離級別的摘要 196
5.4 鎖轉(zhuǎn)換、鎖等待、鎖升級和
死鎖 198
5.4.1 鎖轉(zhuǎn)換及調(diào)整案例 198
5.4.2 鎖升級及調(diào)整案例 200
5.4.3 鎖等待及調(diào)整案例 203
5.4.4 死鎖及調(diào)整案例 205
5.5 鎖相關(guān)的性能問題總結(jié) 209
5.6 鎖與應(yīng)用程序設(shè)計(jì) 211
5.7 鎖監(jiān)控工具 214
5.8 最大化并發(fā)性 218
5.8.1 選擇合適的隔離級別 218
5.8.2 盡量避免鎖等待、鎖升級和
死鎖 218
5.8.3 設(shè)置合理的注冊變量 218
5.9 本章小結(jié) 227
第6章 索引設(shè)計(jì)與優(yōu)化 229
6.1 索引概念 229
6.1.1 索引優(yōu)點(diǎn) 229
6.1.2 索引類型 231
6.2 索引結(jié)構(gòu) 231
6.3 理解索引訪問機(jī)制 234
6.4 索引設(shè)計(jì) 237
6.4.1 創(chuàng)建索引 237
6.4.2 創(chuàng)建集群索引 238
6.4.3 創(chuàng)建雙向索引 239
6.4.4 完全索引訪問 240
6.4.5 與創(chuàng)建索引相關(guān)的問題 241
6.4.6 創(chuàng)建索引示例 241
6.5 索引創(chuàng)建原則與示例 242
6.5.1 索引與謂詞 242
6.5.2 根據(jù)查詢使用的列建立
索引 244
6.5.3 根據(jù)條件語句中謂詞的選擇
度創(chuàng)建索引 245
6.5.4 避免在建有索引的列上使用
函數(shù) 246
6.5.5 在那些需要被排序的列上
創(chuàng)建索引 246
6.5.6 合理使用INCLUDE關(guān)鍵詞
創(chuàng)建索引 248
6.5.7 指定索引的排序?qū)傩?249
6.6 影響索引性能的相關(guān)配置 250
6.6.1 設(shè)置影響索引性能的配置
參數(shù) 250
6.6.2 為索引指定不同的表空間 250
6.6.3 確保索引的集群度 251
6.6.4 使表和索引統(tǒng)計(jì)信息保持
最新 251
6.7 索引維護(hù) 251
6.7.1 異步索引清除(AIC) 252
6.7.2 聯(lián)機(jī)索引整理碎片 254
6.7.3 查找使用率低下的索引 254
6.7.4 索引壓縮 256
6.8 DB2 Design Advisor
(db2advis) 256
6.9 本章小結(jié) 260
第7章 DB2優(yōu)化器 265
7.1 DB2編譯器介紹 266
7.2 SQL語句編譯過程 268
7.3 優(yōu)化器組件和工作原理 271
7.3.1 查詢重寫示例:謂詞移動(dòng)、
合并和轉(zhuǎn)換 271
7.3.2 優(yōu)化器成本評估 276
7.3.3 本地謂詞基數(shù)(cardinality)
估計(jì) 277
7.3.4 連接基數(shù)(cardinality)估計(jì) 279
7.3.5 分布統(tǒng)計(jì)信息 283
7.3.6 列組統(tǒng)計(jì)信息對基數(shù)的
影響 287
7.4 數(shù)據(jù)訪問方式 297
7.4.1 全表掃描 297
7.4.2 索引掃描 298
7.4.3 掃描共享 301
7.5 連接方法 302
7.5.1 嵌套循環(huán)連接 303
7.5.2 合并連接 305
7.5.3 哈希連接 306
7.5.4 選擇最佳連接的策略 307
7.6 優(yōu)化級別 307
7.6.1 優(yōu)化級別概述 308
7.6.2 選擇優(yōu)化級別 311
7.6.3 設(shè)置優(yōu)化級別 312
7.7 基于規(guī)則的優(yōu)化 314
7.7.1 優(yōu)化器概要文件概述 314
7.7.2 啟用優(yōu)化概要文件 316
7.7.3 優(yōu)化概要文件使用示例 317
7.8 如何影響優(yōu)化器來提高性能 324
7.8.1 使DB2統(tǒng)計(jì)信息保持
最新 324
7.8.2 構(gòu)建適當(dāng)?shù)乃饕?324
7.8.3 配置合理的數(shù)據(jù)庫配置
參數(shù) 325
7.8.4 選擇合適的優(yōu)化級別 326
7.8.5 合理的存儲(chǔ)I/O設(shè)計(jì) 326
7.8.6 良好的應(yīng)用程序設(shè)計(jì)和
編碼 327
7.9 本章小結(jié) 329
第8章 統(tǒng)計(jì)信息更新與碎片整理 331
8.1 統(tǒng)計(jì)信息更新 332
8.1.1 統(tǒng)計(jì)信息的重要性 332
8.1.2 如何更新統(tǒng)計(jì)信息 333
8.1.3 統(tǒng)計(jì)信息更新示例 335
8.1.4 LIKE STATISTICS統(tǒng)計(jì)信息
更新 339
8.1.5 列組統(tǒng)計(jì)信息更新 340
8.1.6 分布統(tǒng)計(jì)信息更新 349
8.1.7 統(tǒng)計(jì)信息更新策略 355
8.2 自動(dòng)統(tǒng)計(jì)信息更新 357
8.2.1 自動(dòng)RUNSTATS的基本
概念 357
8.2.2 如何打開auto runstats 359
8.2.3 如何監(jiān)控auto runstats 361
8.2.4 自動(dòng)收集統(tǒng)計(jì)視圖的統(tǒng)計(jì)
信息 362
8.3 碎片整理 363
8.3.1 碎片產(chǎn)生機(jī)制和影響 363
8.3.2 確定何時(shí)重組表和索引 364
8.3.3 執(zhí)行表、索引檢查是否需要
做REORG 367
8.3.4 REORG的用法和使用
策略 368
8.4 重新綁定程序包 371
8.5 本章小結(jié) 373