本書內容為FlowofWorkUnitTimeBasedAnalysis性能優化方法論的**部分,主要介紹基于流程響應和流程分解的響應時間分析方法論。基本按照以下方式來展開論述:**部分:從性能優化常見的困惑和場景出發引出一些性能優化的基本概念,并重點闡述了Oracle數據庫性能優化的方法論發展。第二部分:重點闡述FlowofWorkUnitTimeBasedAnalysis優化方法論,闡述流程、資源和組件之間的相互作用,構建了流程響應的輸入輸出的性能優化指標體系。第三部分:資源供給,重點闡述流程、資源和組件中的資源部分,全面分析了CPU、Memory、IOSubsystem,NetworkSubSystem、Lock,BufferLock、Latch、Mutex等主要的Oracle數據庫資源,并針對每種資源建立了獨立的衡量評價體系。
目 錄?Contents
前 言
第1章 Oracle性能優化漫談 1
1.1從生活場景漫談性能優化 1
1.1.1從一個真實病例說起 1
1.1.2如何改善寶馬汽車的運行速度 2
1.2性能優化目標的確定和衡量 3
1.2.1性能優化的范疇或優化對象確定 4
1.2.2性能優化目標的用戶期望管理 4
1.2.3性能優化的目標衡量 5
1.3吞吐量和響應時間 6
1.3.1吞吐量 6
1.3.2響應時間 7
1.3.3吞吐量和響應時間關系曲線 8
1.3.4醫院掛號窗口的吞吐量和響應時間曲線 8
1.3.5tpcc測試的吞吐量和響應時間曲線 10
1.3.6磁盤I/O系統吞吐量和響應時間曲線 10
1.4Oracle性能優化工作的分類 12
1.4.1上線優化或從未達到過性能期望的系統優化 12
1.4.2響應速度逐步變慢的系統優化 13
1.4.3運行過程中突然變慢的系統優化 13
1.4.4突然變慢,持續一段時間后又恢復正常的業務系統優化 14
1.4.5基于降低資源消耗的系統優化 14
1.4.6預防性日常性能優化 14
1.5測量和變化 15
1.5.1測量和性能 15
1.5.2變化檢測和性能優化 17
1.5.3量變和質變 18
1.6基線管理 19
1.6.1基準點和基線 19
1.6.2溝通基線 19
1.6.3基線管理和動態基線 20
1.7Oracle性能優化的神話和誤區 23
1.7.1藝術和科學 23
1.7.2Oracle業務系統性能優化是高手的專利 23
1.7.3測試系統性能很好,生產系統為什么不行 24
1.7.4針對特定性能問題的標準解決方案 24
1.7.5只要資源充足,數據庫性能就不會差 24
1.7.6只要數據庫性能好,業務系統性能必然良好 25
1.7.7降低等待時間就可以提高業務系統性能 25
第2章Oracle性能優化方法論的發展 27
2.1基于局部命中率分析的優化方法論 28
2.2基于OWI的優化方法論 29
2.2.1OWI優化方法論簡述 29
2.2.2OWI方法論的可檢測體系 30
2.2.3OWI方法中wait event的發展 31
2.3響應時間分析優化方法論 32
2.3.1RTA方法論簡述 32
2.3.2RTA方法論的不足和改善 35
2.4基于工作單元的響應時間分析優化方法論 35
2.4.1UOWTBA優化方法論的導入 35
2.4.2輸入吞吐量指標的選擇 36
2.4.3采用UOWTBA優化方法工作 38
2.5基于資源瓶頸分析的優化方法論 38
2.5.1基于資源瓶頸分析優化方法論簡述 38
2.5.2主要的數據庫服務資源供給 39
2.5.3有效運行資源瓶頸分析優化方法 40
2.6流程、資源和組件優化方法論 41
2.6.1吞吐量和響應時間關系曲線 41
2.6.2流程和流程響應分析 41
2.6.3資源分析 43
2.6.4組件 45
第3章流程分析之數據庫登錄流程 46
3.1數據庫登錄導致業務系統性能惡化案例分享 46
3.2數據庫登錄流程的相關指標與優化 47
3.2.1數據庫登錄流程的輸入吞吐量和輸出響應指標 47
3.2.2輸入壓力與輸出響應之間的關系 58
3.2.3數據庫登錄流程響應問題的優化案例 64
第4章流程分析之數據訪問處理流程 67
4.1數據訪問處理流程優化案例分享 68
4.2數據訪問處理流程的分解 68
4.3數據訪問處理流程的輸入和輸出 69
4.3.1輸入單元和輸出單元的確定 69
4.3.2輸入和輸出指標的測量 74
4.3.3輸入和輸出指標的關系曲線 79
4.4數據訪問流程優化步驟 80
4.5客戶端運行和響應階段 80
4.5.1子流程過程性分解 80
4.5.2子流程的輸入和輸出指標 81
4.5.3相關資源和組件 84
4.5.4業務請求和響應階段優化案例 84
4.6SQL語句分析階段(parse階段) 85
4.6.1parse階段子流程分解 85
4.6.2hard parse/soft parse/soft soft parse/no parse的區別 87
4.6.3SQL語句parse的高版本 93
4.6.4復雜語句和簡單語句的parse差異 96
4.6.5parse階段的輸入/輸出指標 99
4.6.6parse階段的優化道路 113
4.6.7相關資源和組件 121
4.6.8parse階段優化案例分析 122
4.7SQL語句執行階段(execute階段) 123
4.7.1SQL執行階段子流程分解 123
4.7.2SQL執行子流程輸入/輸出指標 144
4.7.3SQL執行子流程的輸入/輸出指標衡量 147
4.7.4SQL執行階段輸入/輸出關系圖 155
4.7.5SQL執行階段的優化道路 158
4.7.6SQL執行階段相關資源和組件 162
4.7.7SQL執行階段優化案例 164
4.8fetch次數對邏輯讀的影響 165
4.9提交(Commit)階段的流程分解和分析 167
4.9.1提交階段的主要執行過程 167
4.9.2高并發性提交的響應問題 169
4.9.3提交階段的優化道路 174
第5章資源 175
5.1簡單的資源供給類 176
5.1.1資源使用的突變曲線 176
5.1.2資源的使用率和隊列長度 176
5.1.3導致資源供給性能問題的主要場景 177
5.2并發性資源 178
5.2.1并發性資源效率的衡量 178
5.2.2主要的并發性資源和響應突變曲線 178
第6章資源供給:CPU 179
6.1簡單案例分享 179
6.2CPU的特殊性 179
6.3CPU的工作和運行性能的衡量 180
6.3.1CPU的主要工作 180
6.3.2CPU運行性能的衡量:利用率和運行隊列長度 180
6.3.3CPU的運行性能曲線 180
6.4CPU資源的主要衡量指標 186
6.4.1CPU的主要性能衡量指標 186
6.4.2CPU的主要性能衡量指標的測量 187
6.4.3CPU相關的主要Oracle指標 189
6.5幾個CPU資源常見問題的討論 191
6.5.1CPU資源的100%利用率 191
6.5.2CPU運行隊列的長度標準 191
6.5.3CPU sys部分的資源消耗問題 192
6.6CPU資源優化的目標和道路 193
6.6.1CPU資源問題的場景和優化道路 193
6.6.2降低CPU的輸入壓力 195
6.6.3分布局部的CPU輸入壓力 204
6.6.4提高CPU處理效率 204
6.6.5合理調度平緩化CPU使用 206
6.7CPU資源優化案例 206
第7章資源供給:內存和虛擬內存 208
7.1簡單案例分享 208
7.2物理內存和虛擬內存 208
7.3簡單的虛擬內存管理 209
7.3.1工作存儲分頁和永久存儲分頁 209
7.3.2計算分頁和非計算分頁 210
7.3.3頁面大小和大頁管理 215
7.3.4進程內存管理 218
7.4虛擬內存運行性能的衡量 221
7.4.1虛擬內存運行性能 221
7.4.2虛擬內存的運行性能曲線 222
7.5虛擬內存資源的主要衡量指標 225
7.5.1虛擬內存的主要性能衡量指標 225
7.5.2虛擬內存主要性能衡量指標的測量 226
7.5.3虛擬內存相關的主要Oracle指標 229
7.6幾個虛擬內存資源常見問題的討論 231
7.6.1有128GB的內存,為什么自由空間還是很少 231
7.6.2Oracle業務系統環境下的文件系統緩沖 231
7.6.3如何從AWR報告中發現可能存在的虛擬問題 232
7.6.4如何檢測和發現內存泄漏 233
7.7虛擬內存資源優化的目標和道路 234
7.7.1虛擬內存資源問題的場景和優化道路 234
7.7.2合理配置內存分配參數,避免發生swapin和swapout 234
7.7.3合理分配內存,讓內存的使用處于安全可控的范圍 236
7.7.4充分利用內存,提高業務處理程序運行效率 237
7.7.5合理調度業務程序,使內存使用平緩化 238
7.8虛擬內存資源優化案例 239
第8章資源供給:I/O子系統 243
8.1簡單案例分享 243
8.2I/O子系統和構成 243
8.3卷管理器和文件系統 245
8.3.1卷管理器 245
8.3.2文件系統和邏輯卷 246
8.4HBA、SAN交換機及其他存儲系統鏈路通道 249
8.4.1HBA和SAN 249
8.4.2NIC和網絡交換機 250
8.4.3IB和IB交換機 250
8.5磁盤和磁盤陣列 251
8.5.1磁盤 251
8.5.2磁盤的硬件基礎性能衡量 252
8.5.3磁盤的iops和數據傳輸率 253
8.5.4磁盤平均隊列長度 254
8.5.5磁盤陣列 254
8.6Raid和LUN 255
8.7磁盤多路徑訪問和基于存儲的容災復制影響 258
8.7.1磁盤多路徑訪問 258
8.7.2基于存儲(卷)的容災復制系統的影響 259
8.8固態硬盤和PCIe 260
8.8.1固態硬盤和傳統機械硬盤 260
8.8.2SSD的簡單結構 261
8.8.3固態硬盤不是機械設備 261
8.8.4固態硬盤不支持原址更新 263
8.8.5Oracle和固態硬盤 263
8.9隨機訪問和順序訪問 266
8.10基于Oracle數據庫的存儲系統設計 269
8.10.1Oracle online redo logf?ile和磁盤陣列 269
8.10.2臨時表空間的存儲設計 269
8.10.3OLTP業務系統或混合型業務系統 269
8.10.4數據倉庫或DSS決策系統 270
8.11I/O子系統的運行性能衡量 270
8.11.1I/O子系統運行性能的衡量指標 270
8.11.2I/O子系統的運行性能曲線 271
8.11.3I/O資源主要性能衡量指標的測量 272
8.11.4I/O子系統相關的主要Oracle指標 275
8.12幾個I/O子系統資源常見問題的討論 275
8.12.1I/O資源極度緊張但I/O wait表現不高 275
8.12.2發現大量的磁盤Cache但似乎Oracle不理會 276
8.12.3磁盤利用率為100%,但處理能力還在不斷上漲 277
8.12.4如何發現因存儲系統導致的性能故障 277
8.13I/O子系統資源優化的目標和道路 278
8.13.1I/O資源問題的場景和優化道路 278
8.13.2明確存儲故障,修正配置或修復存儲 278
8.13.3降低存儲系統的全局I/O壓力 280
8.13.4分布存儲系統壓力,使每個I/O設備處于合理范疇 290
8.13.5合理調度業務程序,使I/O資源使用平緩化 291
8.14I/O子系統資源優化案例 291
第9章資源供給:網絡子系統 294
9.1簡單案例分享 294
9.2網絡子系統和構成 294
9.2.1網卡、網絡交換機(路由器)和網絡 294
9.2.2網絡延遲和吞吐量 296
9.2.3高速內聯網和業務網絡 297
9.2.4在低速網絡下運行業務 298
9.3網絡協議:TCP、UDP和NFS 298
9.3.1TCP 298
9.3.2UDP 299
9.3.3NFS 299
9.4網絡參數配置和運行性能 299
9.4.1RTT、Bandwidth和BDP 300
9.4.2主要的網絡參數 300
9.4.3主要的NFS參數 304
9.5網絡帶寬的擴展 305
9.5.1網卡綁定類型 305
9.5.2負載均衡模式網卡綁定配置 306
9.5.3負載均衡模式網卡綁定測試 308
9.6主要的網絡性能監視工具 309
9.7網絡子系統的運行性能衡量 313
9.7.1網絡子系統運行性能的衡量指標 313
9.7.2網絡子系統的運行性能曲線 314
9.7.3網絡資源主要性能衡量指標的測量 315
9.7.4網絡子系統相關的主要Oracle指標 317
9.8幾個網絡子系統資源常見問題的討論 317
9.8.1系統中總是有SQL*Net message from client事件 317
9.8.2如何發現過量的網絡交互引起的響應緩慢 318
9.8.3C語言處理數據的效能遠遠低于數據庫存儲過程 319
9.9網絡子系統資源優化的目標和道路 319
9.9.1網絡資源問題的場景和優化道路 319
9.9.2明確網絡故障,修正配置或修復存儲 320
9.9.3降低網絡系統的全局輸入壓力 320
9.9.4分布網絡系統壓力,使每個網絡設備處于合理范疇 322
9.9.5設置**的網絡配置參數,使網絡設備運行效率** 322
9.10網絡子系統資源優化案例 322
第10章 資源供給:隊列鎖 325
10.1簡單案例分享 325
10.2并發性控制和隊列鎖 326
10.2.1鎖資源和鎖資源的訪問 326
10.2.2鎖資源的感知 327
10.2.3隊列鎖相關的資源參數 329
10.2.4隊列鎖、事務鎖和DML表格鎖 330
10.2.5鎖模式和意向鎖 330
10.2.6主要的Oracle隊列鎖 332
10.3事務鎖 333
10.3.1行鎖和不加鎖的一致性讀 334
10.3.2TX鎖沖突 338
10.3.3死鎖 345
10.3.4基于TX lock的統計、事件和視圖 350
10.3.5TX lock資源沖突的優化道路 354
10.4TM鎖 355
10.4.1TM lock作用模式和作用場合 356
10.4.2dml_locks參數和TM lock 358
10.4.3ora-00054和TM lock 358
10.4.4TM lock的統計、等待事件和視圖 359
10.4.5TM lock資源的優化 361
10.5sequence相關的鎖 361
10.5.1SQ lock 361
10.5.2sequence導致的row cache lock 367
10.5.3DFS lock handle和SV lock 369
10.5.4sequence相關的統計、等待事件和視圖 372
10.5.5sequence相關鎖資源的優化 374
10.6HW lock和ST lock 375
10.6.1高水位的概念和高水位的移動 375
10.6.2HW lock沖突 378
10.6.3HWM和全表掃描 378
10.6.4HW lock相關統計、等待事件和視圖 379
10.6.5HW lock資源的優化之道 381
10.7CF lock 382
10.7.1CF lock的作用場景 382
10.7.2rman備份或控制文件自動備份和CF lock 383
10.7.3dump current redo log持有CF lock 384
10.7.4CF lock相關統計、等待事件和視圖 384
10.7.5CF lock資源的優化之道 385
10.8US lock 386
10.8.1隱含參數_undo_autotune和參數undo_retention 386
10.8.2事件10511和10512 388
10.9RO lock 388
10.9.1RO lock資源性能的相關因素 389
10.9.2RO lock涉及的主要事件 390
10.10 隊列鎖運行性能的衡量 391
10.10.1 隊列鎖運行性能的衡量 指標 391
10.10.2 隊列鎖資源的運行性能 曲線 391
10.10.3 隊列鎖運行性能衡量 指標的測量 391
10.11 隊列鎖資源優化的目標和道路 394
10.11.1 業務壓力導致鎖資源 沖突 394
10.11.2 業務不當導致過多持有 隊列鎖 395
10.11.3 持有隊列鎖的時間過長 396
10.11.4 缺乏事物失敗思維導致 事務規模過大 396
10.11.5 調度和運維不當導致隊列 鎖長期持有 396
10.11.6 擁有隊列鎖資源的進程 處于僵死或不活動狀態 396
10.12 隊列鎖資源優化案例 397
第11章 資源供給:row cache lock和library cache lock 399
11.1簡單案例分享 399
11.2row cache lock和ddl lock 399
11.2.1row cache的組成 399
11.2.2row cache lock涉及的視圖 408
11.2.3row cache lock沖突的排查 408
11.3library cache lock 409
11.3.1library cache lock和鎖模式 410
11.3.2library cache lock的場景觀察 412
11.3.3library cache lock涉及的視圖 420
11.3.4library cache lock故障的排查和優化 420
11.4row cache lock和library cache lock運行性能的衡量 420
11.4.1row cache lock資源運行性能的衡量指標 420
11.4.2library cache lock資源運行性能的衡量指標 421
11.4.3row cache lock鎖運行性能衡量指標的測量 422
11.4.4library cache lock運行性能衡量指標的測量 423
11.5row cache lock鎖資源優化的目標和道路 426
11.5.1 數據字典的變化 426
11.5.2降低row cache object的重載 428
11.6library cache lock鎖資源的目標和道路 428
11.7row cache lock和library cache lock鎖資源優化案例 429
第12章 資源供給:buffer lock 431
12.1簡單案例分享 431
12.2buffer header和buffer lock(pin) 431
12.2.1buffer header和buffer lock 432
12.2.2buffer lock的鎖兼容 433
12.3buffer lock沖突的簡單驗證 434
12.3.1select和select操作 435
12.3.2select和update操作 436
12.3.3update和update之間 437
12.4buffer lock運行性能的衡量和測量 439
12.4.1buffer lock沖突的buffer block類型 439
12.4.2buffer lock資源運行性能的衡量指標 441
12.4.3buffer lock鎖資源運行性能衡量指標的測量 441
12.5buffer lock鎖資源優化的目標和道路 442
12.5.1降低buffer lock鎖資源需求 443
12.5.2分散buffer lock局部熱點,降低buffer lock并發性沖突 443
12.5.3降低buffer lock的持有時間 448
12.5.4read by other session的buffer lock沖突 448
12.6buffer lock鎖資源優化案例 448
第13章 資源供給:latch 450
13.1簡單案例分享 450
13.2并發性控制資源:latch或spinlock 450
13.2.1latch獲得和釋放的基本過程 450
13.2.2latch結構 453
13.2.3CAS、TAS及latch的spin 453
13.2.4Willing-To-Wait和no-Wait latch 455
13.3latch的spin和spin_count控制 456
13.3.1latch的spin和spin_count控制 456
13.3.2不同latch的spin count細粒度控制 457
13.3.3x$ksllclass視圖和其他latch參數 459
13.3.4spin_count參數的合理設置 460
13.4latch資源沖突和性能優化 461
13.4.1latch沖突的簡單認知 462
13.4.2常見的latch沖突 465
13.4.3latch性能相關的統計數據 465
13.4.4幾張主要的latch視圖 466
13.5主要的latch資源場景和沖突 468
13.5.1Cache buffers chains latch 468
13.5.2cache buffer lru chains latch 473
13.5.3library cache(lock/pin)latch 476
13.5.4shared pool latch 481
13.5.5row cache objects latch 490
13.5.6undo global data latch 501
13.5.7object queue header operation latch和checkpoint queue latch 505
13.6latch資源運行性能的衡量 506
13.7latch資源優化的目標和道路 507
13.7.1降低latch資源需求 508
13.7.2分布熱點latch資源 513
13.7.3降低latch資源的持有時間 520
13.7.4spin_count和latch資源優化 524
13.8latch資源優化案例 525
第14章 資源供給:mutex 527
14.1簡單案例分享 527
14.2并發性控制資源:mutex 527
14.2.1Oracle 11gR2中包含的mutex 528
14.2.2mutex的工作方式 529
14.3mutex對應的wait event說明和場景 532
14.3.1mutex對應的wait event描述 532
14.3.2cursor:pin S事件 533
14.3.3cursor:mutex事件和library cache:mutex事件 535
14.3.4hash table mutex、cursor:mutex S|X和SQL高版本 537
14.4mutex資源沖突和性能優化 538
14.4.1常見的mutex沖突 538
14.4.2mutex性能相關的統計數據 539
14.4.3主要的mutex視圖 539
14.5主要的mutex資源場景和沖突 542
14.5.1cursor pin mutex 542
14.5.2cursor parent mutex 542
14.5.3hash table mutex 542
14.5.4cursor stat mutex 543
14.6mutex資源的運行性能衡量和測量 543
14.6.1mutex資源運行性能衡量的主要指標 543
14.6.2mutex資源運行性能衡量指標的測量 544
14.7mutex資源優化的目標和道路 545
14.7.1降低mutex資源需求 545
14.7.2分布熱點mutex資源 547
14.7.3減少mutex資源的持有時間 550
14.8mutex_spin_count、sleep_time、scheme和mutex資源優化 552
14.9mutex資源優化案例 553