首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 效能優化技巧篇:優化器選擇、表存取路徑、共享 SQL 與綁定變數

     編輯:Oracle 資料庫相關知識

1. 選用適合的優化器

三種模式:RULE (規則)、COST (成本/CBO)、CHOOSE (選擇性)。透過 init.ora 設定 OPTIMIZER_MODE (RULE/COST/CHOOSE/ALL_ROWS/FIRST_ROWS) 或 Session/SQL 層級覆蓋 (Hint)。

使用 CBO **必須定期執行 ANALYZE 收集統計資訊**。CHOOSE 模式下,有統計資訊則用 CBO,否則落回 RBO。預設 CHOOSE 易導致非預期全表掃描,**建議明確指定 RULE 或 COST**。

2. 表存取路徑

  • 全表掃描:循序讀取每筆記錄,多區塊讀取優化。
  • ROWID 存取:透過索引快速定位 ROWID 再存取資料,索引鍵查詢效能最佳。

3. 共享 SQL (Shared Pool)

首次解析後 SQL 存入 SGA Shared Pool,所有用戶共享。**嚴格字元級比對**:大小寫、空白、換行必須完全相同才能共享。

共享三條件

  1. 字元級相同:SELECT * FROM EMP ≠ select * from emp。
  2. 參照物件相同:私有同義詞指向不同物件則無法共享;公共同義詞或同一擁有者則可。
  3. 綁定變數名稱相同::blk1.pin ≠ :blk1.ot_ind,即使執行時值相同。

DBA 應調大 SHARED_POOL_SIZE 提高命中率。注意:共享 SQL 僅適用單表,**多表連接不支援快取緩衝**。

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