首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

DBA 培訓筆記:性能問題分類、優化器模式、連接方式與存取路徑

     編輯:Oracle 教學

DBA 培訓筆記:性能問題分類、優化器模式、連接方式與存取路徑

整理自 DBA 培訓課程核心知識點,涵蓋三大性能問題現象、優化器演進、表存取路徑、連接演算法、驅動表選擇原則。

三大常見性能問題現象

  • Slow:查詢緩慢,資源消耗大。
  • Hang:整個資料庫無響應,無法建立新連線。需收集 HANGANALYZE dump 分析。
  • Lock:鎖衝突導致阻塞/死鎖。

診斷工具:AWR、10046 Trace、ORADEBUG、RDA、SQL Trace、PL/SQL Profiler。

優化器模式演進

目標模式:ALL_ROWS (吞吐量優先) vs FIRST_ROWS(n) (響應時間優先)。

表存取路徑 (由快到慢)

  1. TABLE ACCESS BY ROWID:單筆精準存取,最快。
  2. INDEX UNIQUE SCAN:唯一索引等值查詢。
  3. INDEX RANGE SCAN:範圍/非唯一索引掃描。
  4. INDEX FULL SCAN:索引全掃描 (順序讀取)。
  5. INDEX FAST FULL SCAN:索引快速全掃描 (多區塊、無序)。
  6. FULL TABLE SCAN:全表掃描,大表代價高。

表連接演算法

模式特點適用版本
RBO (Rule-Based)固定規則排名,不看統計資訊≤ 9i
CBO (Cost-Based)基於統計資訊計算成本,選擇最低成本計劃10g+ 預設
CHOOSE有統計用 CBO,無統計用 RBO9i/10g 過渡

驅動表選擇原則

  • Oracle 通常從 FROM 子句左到右解析 (舊版)。
  • CBO 傾向選擇 結果集最小 的表為驅動表 (Outer Table),減少內層迴圈次數。
  • 可用 ORDERED、LEADING Hint 指定連接順序。

關鍵術語

  • Selectivity:選擇率 = 符合條件行數 / 總行數。越低越適合索引。
  • Driving Table:外層迴圈表 (Outer)。
  • Probed Table:內層探查表 (Inner)。
  • Concatenated Index:複合索引。
  • Recursive Calls:遞歸呼叫 (如空間管理、DDL 隱含操作)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
演算法適用場景特點
NESTED LOOPS (NL)驅動表小、被探查表有索引可先行回傳結果、適合 FIRST_ROWS
HASH JOIN大表連接大表、等值連接、無索引需大量 PGA、僅 CBO 使用
SORT MERGE JOIN非等值連接、雙方皆有索引、大結果集需排序、消耗記憶體、可換取時間