Parallel Query Option (PQO) 是 Oracle 企業版核心功能,將單一 SQL 拆解為多個並行執行緒 (PX Server) 同時存取資料。本文從架構優勢、適用場景、配套工具三面向說明為何大型資料倉庫離不開 PQO。
| 場景 | 操作 | 並行化效益 |
|---|---|---|
| 1. 大量資料查詢/報表 | 全表掃描、Hash Join、Sort Merge、Group By、大型排序 | 線性縮短回應時間,支援數 TB 級資料秒級聚合 |
| 2. 大量資料載入 (ETL) | INSERT /*+ APPEND PARALLEL(t, 8) */ INTO t SELECT ... FROM src | Direct Path Load 繞過 Buffer Cache、Redo 最小化、並行寫入多個分區/資料檔 |
| 3. 索引建立/重建 | CREATE INDEX ... PARALLEL 8 / ALTER INDEX ... REBUILD PARALLEL 8 | 並行掃描基表、並行排序鍵值、並行寫入索引段,大表索引建立從小時級降至分鐘級 |
sqlldr ... DIRECT=TRUE PARALLEL=TRUE 配合多個控制檔同時載入不同分區,達成極致載入速度。PARALLEL_MAX_SERVERS:系統最大並行伺服器進程數 (建議 CPU 核心數 × 2~4)。PARALLEL_MIN_SERVERS:啟動時預先啟動的進程數,減少啟動延遲。PARALLEL_DEGREE_POLICY:AUTO (11gR2+) 讓優化器依物件大小自動決定並行度。PGA_AGGREGATE_TARGET / PGA_AGGREGATE_LIMIT:控制並行操作記憶體總量。V$PX_SESSION, V$PX_PROCESS, V$SQL_WORKAREA_ACTIVE, DBA_HIST_ACTIVE_SESS_HISTORY (ASH) 觀察並行執行狀態與資源消耗。DBMS_STATS.GATHER_SYSTEM_STATS),統計過期會導致錯誤並行度選擇。PQO 是「大力出奇蹟」的利器,但必須在「大資料量、低併發、充足硬體資源」的前提下使用,否則適得其反。