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

Oracle 效能調優核心三大支柱:優化器、存取路徑、共享 SQL

     編輯:Oracle 資料庫基礎

Oracle 效能調優的基石在於選對優化器、走對存取路徑、用好共享 SQL。本文系統梳理三大支柱的原理、參數設定與實務誤區。

一、選用適合的優化器

模式適用場景設定方式
RULE (RBO)舊系統、無統計資訊、規則明確OPTIMIZER_MODE=RULE 或 Hint /*+ RULE */
COST (CBO)現代應用、統計資訊完整、複雜查詢OPTIMIZER_MODE=ALL_ROWS/FIRST_ROWS,需定期 ANALYZE/DBMS_STATS
CHOOSE預設值,有統計用 CBO,無統計用 RBOOPTIMIZER_MODE=CHOOSE(不建議生產環境)

建議:生產環境明確指定 RULE 或 COST,避免 CHOOSE 導致計畫不穩定與非預期全表掃描。

二、表存取路徑

  • 全表掃描:循序讀取所有區塊,多區塊讀取(DB_FILE_MULTIBLOCK_READ_COUNT)優化。適合小表、大比例資料存取、無索引欄位。
  • ROWID 存取:透過索引快速定位 ROWID,再單區塊讀取資料。適用高選擇性查詢(< 5~10%)。索引維護成本(DML 觸發 B*Tree 重組)需權衡。

三、共享 SQL(Cursor Sharing)機制

SQL 文本在共享池(Shared Pool)按字元級嚴格匹配:大小寫、空白、換行、物件解析、綁定變數名稱必須完全一致才能共享。

三大共享條件

  1. 字元級相同:SELECT * FROM EMP ≠ select * from emp ≠ SELECT * FROM EMP (尾端空白)。
  2. 物件解析相同:同名 Private Synonym 指向不同物件、Public Synonym vs Table Owner,視為不同物件,無法共享。
  3. 綁定變數名稱相同::blk1.pin ≠ :blk1.ot_ind,即使執行時值相同。

調優建議

  • 統一 SQL 寫作規範(大寫關鍵字、固定縮排、綁定變數命名標準)。
  • 優先使用 Public Synonym 或同一 Schema 物件,避免 Private Synonym 導致共享失效。
  • 調大 SHARED_POOL_SIZE 容納更多游標,監控 V$LIBRARYCACHE 命中率(>90%)、RELOADS/PINS(<1%)。
  • 頻繁執行的 PL/SQL 匿名區塊轉為預存程序/函數/套件,利用永久物件共享。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved