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

Oracle SQL 調優核心:優化器模式、執行計劃固定與統計資訊管理

     編輯:Oracle 資料庫基礎

優化器模式選擇

模式特點適用場景
RULE (RBO)規則排名、語法驅動、字典驅動僅為相容舊應用
COST (CBO)成本最低路徑、統計資訊驅動強烈推薦,成本主要源自邏輯讀次數

執行計劃固定

Stored Outline 機制

  • 將理想執行計劃以 Hints 形式儲存於 OUTLN Schema。
  • 語句完全匹配 (含大小寫、空白) 時自動套用。
  • 分類管理:CREATE_STORED_OUTLINES = category_name、USE_STORED_OUTLINES = category_name。

建立與使用流程

-- 自動捕捉
ALTER SESSION SET CREATE_STORED_OUTLINES = tune_cat;

-- 手工建立
CREATE OR REPLACE OUTLINE ol_name FOR CATEGORY tune_cat ON
SELECT ... FROM ... WHERE ...;

-- 啟用
ALTER SESSION SET USE_STORED_OUTLINES = tune_cat;

Private Outline 線上微調

  • Stored Outline 的會話級副本,可編輯 Hints 而不影響生產。
  • USE_PRIVATE_OUTLINES = TRUE 時優先匹配 Private Outline。
  • 驗證無誤後 PUBLIC 發布覆蓋原 Stored Outline。

Hints 直接干預

CREATE INDEX gen_idx ON customers(cust_gender);
SELECT /*+ INDEX(customers gen_idx) */
       cust_last_name, cust_street_address, cust_postal_code
FROM sh.customers WHERE UPPER(gender) = 'M';

EXPLAIN PLAN 快速分析

-- 建立 plan_table
@?/rdbms/admin/utlxplan.sql

-- 生成計劃
EXPLAIN PLAN FOR SELECT last_name FROM hr.emp;

-- 查看 (含/不含並行資訊)
@?/rdbms/admin/utlxpls.sql  -- 簡易
@?/rdbms/admin/utlxplp.sql  -- 並行

統計資訊管理

對象視圖收集方式
表DBA_TABLESANALYZE TABLE ... COMPUTE/ESTIMATE STATISTICS
索引DBA_INDEXESANALYZE INDEX ... VALIDATE STRUCTURE
列USER_TAB_COL_STATISTICSANALYZE TABLE ... FOR COLUMNS ...
直方圖DBA_HISTOGRAMS / DBA_TAB_HISTOGRAMSANALYZE TABLE ... FOR COLUMNS SIZE n ...

最佳實踐:10g 後改用 DBMS_STATS 套件,支援並行、增量、自動收集,功能更強大。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved