Oracle 資料庫已成為企業級應用的基石,而效能調優則是 DBA 發揮其最大價值的關鍵。調優並非單一技巧,而是一套系統工程。本文梳理調優的核心哲學——「減少 I/O 是首要目標」,並從外部環境、Row Resquencing(行重排序)、SQL 調優、排序與競爭等層面,提供可落地的指導原則。
許多新手一上來就研究參數、索引、執行計畫,卻忽略了 Oracle 運行的物理基礎。若 CPU、記憶體、網路等外部資源存在瓶頸,任何內部調優皆屬無本之木。
工具建議:使用 vmstat、top、sar、glance 等 OS 層級工具監控資源佔用,確保資料庫伺服器擁有充足算力與記憶體。
資深 DBA 深知:磁碟 I/O 是回應時間的最大組成,且比記憶體存取慢 10,000 倍。 若能將表中資料的物理排序與主鍵/常用索引順序一致,範圍掃描時即可透過順序讀取大幅減少物理 I/O。
以查詢 SELECT salary FROM employee WHERE last_name LIKE 'B%' 為例:
效能提升幅度取決於原資料的亂序程度(可查 DBA_INDEXES.CLUSTERING_FACTOR 判斷:接近區塊數=好,接近筆數=差)及單次查詢存取筆數。對於大量 OLTP 範圍查詢,效能常可提升 3 倍以上。
CREATE TABLE new_emp AS
SELECT * FROM employee ORDER BY last_name;
重建索引、授權、同義詞後,以 RENAME 或 ALTER TABLE ... MOVE 切換。注意:隨機單筆主鍵存取不受益於此法。
SORT_AREA_SIZE、PGA_AGGREGATE_TARGET,善用臨時表空間,避免磁碟排序。INITRANS/MAXTRANS、FREELISTS、分區表/索引,減少熱塊競爭。Oracle 調優是「由外而內、由粗到細」的系統工程。先保障硬體資源無瓶頸,再以減少 I/O 為核心,配合 Row Resquencing、SQL 優化、記憶體管理與鎖競爭控制,方能構建高效能、高可用的資料庫系統。