DBA 培訓筆記:性能問題分類、優化器模式、連接方式與存取路徑
整理自 DBA 培訓課程核心知識點,涵蓋三大性能問題現象、優化器演進、表存取路徑、連接演算法、驅動表選擇原則。
三大常見性能問題現象
- Slow:查詢緩慢,資源消耗大。
- Hang:整個資料庫無響應,無法建立新連線。需收集
HANGANALYZE dump 分析。
- Lock:鎖衝突導致阻塞/死鎖。
診斷工具:AWR、10046 Trace、ORADEBUG、RDA、SQL Trace、PL/SQL Profiler。
優化器模式演進
| 模式 | 特點 | 適用版本 |
| RBO (Rule-Based) | 固定規則排名,不看統計資訊 | ≤ 9i |
| CBO (Cost-Based) | 基於統計資訊計算成本,選擇最低成本計劃 | 10g+ 預設 |
| CHOOSE | 有統計用 CBO,無統計用 RBO | 9i/10g 過渡 |
目標模式:ALL_ROWS (吞吐量優先) vs FIRST_ROWS(n) (響應時間優先)。
表存取路徑 (由快到慢)
- TABLE ACCESS BY ROWID:單筆精準存取,最快。
- INDEX UNIQUE SCAN:唯一索引等值查詢。
- INDEX RANGE SCAN:範圍/非唯一索引掃描。
- INDEX FULL SCAN:索引全掃描 (順序讀取)。
- INDEX FAST FULL SCAN:索引快速全掃描 (多區塊、無序)。
- FULL TABLE SCAN:全表掃描,大表代價高。
表連接演算法
| 演算法 | 適用場景 | 特點 |
| NESTED LOOPS (NL) | 驅動表小、被探查表有索引 | 可先行回傳結果、適合 FIRST_ROWS |
| HASH JOIN | 大表連接大表、等值連接、無索引 | 需大量 PGA、僅 CBO 使用 |
| SORT MERGE JOIN | 非等值連接、雙方皆有索引、大結果集 | 需排序、消耗記憶體、可換取時間 |
驅動表選擇原則
- Oracle 通常從
FROM 子句左到右解析 (舊版)。
- CBO 傾向選擇 結果集最小 的表為驅動表 (Outer Table),減少內層迴圈次數。
- 可用
ORDERED、LEADING Hint 指定連接順序。
關鍵術語
- Selectivity:選擇率 = 符合條件行數 / 總行數。越低越適合索引。
- Driving Table:外層迴圈表 (Outer)。
- Probed Table:內層探查表 (Inner)。
- Concatenated Index:複合索引。
- Recursive Calls:遞歸呼叫 (如空間管理、DDL 隱含操作)。
- 上一篇文章: Oracle 表分區完整指南:範圍、雜湊、列表、複合分區與維護操作
- 下一篇文章: Oracle 效能優化操作 (16):使用分區索引加速查詢
Copyright ©
程式碼之家 All Rights Reserved