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

Oracle 並行處理技術詳解:架構優勢、靜態分區 vs 動態並行、共享一切體系結構

     編輯:Oracle 資料庫基礎

Oracle 並行處理 利用多 CPU、多 I/O 通道、大量記憶體同時執行單一資料庫操作,是 TB 級資料倉庫與關鍵業務系統的核心引擎。本文深入解析 9i 並行架構優勢、靜態分區 (Shared-Nothing) 與動態並行 (Shared-Everything) 兩大設計策略的本質差異。

並行處理核心價值

  • **硬體資源 100% 利用**:每個 CPU、每 Byte 記憶體、所有 I/O 頻寬。
  • **自適應動態分配**:依可用資源、請求優先級、系統負載即時調整並行度。
  • **無縫整合 RAC**:單機 SMP、叢集、MPP 皆受益於同一架構。
  • **支援混合負載**:策略性查詢 (CEO 決策) 優先於批次報表,資源動態劃分。

兩大並行化設計策略

策略核心機制代表架構關鍵限制
靜態並行 (Static Partitioning)**物理資料分區** 綁定節點,節點獨佔存取其分區Shared-Nothing (純不共享)資料重新分區需人工、擴展不彈性、單點故障
動態並行 (Dynamic Parallelism)**執行時** 依查詢特徵切分工作單元,多進程並行存取共享資料Shared-Everything (共享一切)需高速 Interconnect、鎖/一致性協調開銷

Shared-Nothing (不共享) 架構缺點

  1. 不適合 SMP 硬體:SMP 本質共享一切,強行分區屬人為限制。
  2. 資源利用率低:查詢不需全部分區時,閒置節點無法協助;大表未分區時無法並行。
  3. 擴展僵化:業務增長需重新分區 (Re-partition),耗時、停機、風險高。
  4. 容錯能力弱:節點掛掉 = 對應分區不可用,無法透過其他節點接管。

Oracle Shared-Everything (共享一切) 動態並行優勢

  1. 每個 SQL 獨立優化並行計畫:解析時依統計資訊、當前負載、優先級決定並行度 (DOP) 與工作分配。
  2. 彈性並行度:無最小 DOP 限制,可 1~所有節點動態調整。
  3. 自適應新增節點:新節點上線,下一條 SQL 自動納入並行選項,無需重組資料。
  4. 查詢協調器 (QC) + PX Servers:QC 分派工作,PX Server 從共用池取得,工作完成歸還池中。
  5. 資料/功能傳遞機制**:同樣支援區塊傳送、功能傳送,但**不受物理分區限制**,可構造最優資料子集。

並行執行流程

  1. SQL 進入 → 解析 → 優化器決定 **並行執行計畫** (含 DOP、資料分佈方法)。
  2. 原始 Process 變為 **Query Coordinator (QC)**。
  3. 從 **Parallel Execution Server Pool** 分配 N 個 PX Servers (跨節點)。
  4. 每個 PX Server 獨立處理指定資料片段 (Granule)。
  5. 中間結果透過 **PX SEND / PX RECEIVE** 在 PX Servers 間傳遞 (或寫暫存表)。
  6. QC 收集最終結果回傳客戶端。

Granule (粒度) 分配方式

  • Block Range Granules:依區塊範圍切分,適合全表掃描。
  • Partition Granules:依分區切分,適合分區表。

與 RAC 整合

RAC 環境下,PX Servers 可跨實例分配,**Cache Fusion** 透過 Interconnect 傳遞區塊,實現真正的 **叢集並行查詢**。

結論

Oracle 選擇 **動態並行 + 共享一切** 架構,而非靜態分區,核心在於**保留硬體彈性、支援混合負載、消除人工重組**。這是 Oracle 在並行處理領域持續領先的架構基因。

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