以下的文章主要是對Oracle數據庫並行處理技術的執行時動態並行即共享一切的相關內容的描述,如果你對Oracle數據庫並行處理技術的執行中有疑問的話,你不妨浏覽下面的文章,希望你能從中獲得自己想要的東西。
使用Oracle 的動態並行處理框架,可以共享所有數據。並行化和將工作分成更小的單元的決策,並不受限於數據庫設置(創建)時所做的任何預先確定的靜態數據分布。
由於能夠為每個語句構造不受限制的、優化的數據子集,執行時動態並行可以提供與不共享體系結構等同的或甚至更好的可伸縮性。
每個查詢在訪問、連接和處理數據的不同部分時都有它自己的特征。因此,每個SQL語句在被解析時都要進行優化和並行化處理。數據更改時,如果有更加優化的並行執行計劃可用,或者系統中新添加了一個節點,那麼Oracle可以自動適應新的情況。這樣可為並行化任何種類的操作提供最高程度的靈活性:
(1)、在語句執行前,對於每個查詢要求,會動態地優化並行訪問的物理數據子集。
(2)、對於每個查詢,都會優化其並行度。與不共享環境不同,不存在必需的最小並行度來調用所有節點訪問所有數據,這是訪問所有數據的基礎要求。
(3)、操作可以根據當前工作負載、特征和查詢的重要性,使用一個、一些或全部Real Application Cluster 節點並行運行。
只要語句得到優化和並行化,就可以知道所有後續的並行子任務。原始進程變為查詢協調器;並行處理服務器(PX 服務器)從一個或多個節點上的並行處理服務器的公用緩沖池得到分配,並開始並行執行該操作。
與不共享體系結構相似,共享一切體系結構中的每個並行處理服務器在其個人數據子集上獨立工作。數據或功能在並行進程之間的傳送機制也與上述的不共享體系結構相似或者相同。確定請求的並行計劃之後,每個並行處理服務器都知道其數據集和任務,而進程間通信就像在不共享環境中一樣很少。
然而,與不共享體系結構不同,每個並行處理的SQL 語句不需要考慮任何物理數據庫布局限制就可以進行優化。這使得每個並行處理可以構造最佳的數據子集,從而提供與純不共享體系結構相比同等的,甚至在大多數情形下更好的可伸縮性和性能。只要有益,並行操作的後續步驟就會由一個並行處理服務器進行組合和處理,從而減少數據傳送或功能傳送的需求。
Oracle數據庫並行處理技術之為什麼共享一切比不共享更好?
不共享體系結構可以追溯到將海量並行處理(MPP)系統看作唯一能提供可伸縮的高端並行計算的硬件體系結構。MPP系統中的每個節點都有它自己的系統組件(CPU、內存和磁盤),在不同的子任務上工作,並且不能共享其任何資源。
這一切都已過去。現在,大多數成功的、廣泛使用的並行硬件系統都是對稱多處理器系統(SMP), 要麼是單機的,要麼是作為松耦合的群集。SMP系統利用共享公用內存和磁盤資源的多處理器,因而也被稱為“共享一切”系統。
純不共享體系結構的支持者總是聲稱共享一切體系結構(特別是群集環境)對於高端環境會缺乏可伸縮性並引起顯著的開銷,因而這種體系結構不能用於具有高度並行和/或並發性的高端應用。這種說法是錯誤的。今天的硬件和軟件技術已經解決了過去所有的問題,如高速群集互連或Oracle Real Application Clusters 的高速緩存融合體系結構。
Oracle 的動態並行處理框架建立在與不共享軟件相同的並行高級計算基礎設計之上,具有所有的優點,還增強了其功能並克服了不共享方法在體系結構上的缺點。基於不共享原理的軟件可以看作是第一代、但已經過時的數據庫並行處理軟件。
Oracle數據庫並行處理技術的相關內容就向你介紹到這裡,希望對你了解和學習Oracle數據庫並行處理技術有所幫助。