oracle 中並行度的設定需要考慮的因素

pingley發表於2012-06-12
oracle 中並行度的設定需要考慮的因素
並行執行是oracle 中一項比較重要的技術,特別是在OLAP系統中,
應對長期執行資源消耗高的SQL語句。並行度的設定對於使用oracle
並行執行特性來說是一項關鍵而複雜的任務,設定的不恰當,可能
反而因為使用oracle 並行執行特性而導致系統的效能下降。
oracle 中並行度的設定不僅僅是透過幾個引數的調整那麼簡單,更重要
的是明確以下幾個問題。
1、伺服器的CPU核心數。
雖然現在的膝上型電腦都早已經跨入雙核的時代,更不用說是伺服器了,
但是還是可能存在你的伺服器執行在單個CPU的虛擬機器上面。即使你的
伺服器有多個核心,但是把並行度設定的過高是不明智的。所有應該認真
的考慮一下CPU核心數和並行度的關係。
2、訪問的資料在磁碟上面是如何組織的。
如果是儲存在單個磁碟上面,因為並行程式或者執行緒要排隊等待訪問磁碟,
會削弱並行處理的優勢,如果要訪問的資料按照能夠並行訪問的方式組織
在多個磁碟裝置上面(並不是資料組織到多個磁碟就能夠並行訪問的),
那麼並行的優勢將會很明顯。
3、要採用並行執行的SQL是什麼性質的。
那些長期執行或者資源密集型的SQL語句,才能夠在並行執行中獲得益處。
那些短小的SQL語句並不是適合採用並行執行。因為初始化和協調多個並行
程式存在一定的開銷。所有說事務性的語句不適合採用並行執行,並行執行
更多的場合是使用在OLAP系統中。
注:系統中不可能所有的SQL語句都採用並行執行,也沒有這個必要。
4、系統的負載。
即使你的系統中CPU核心數很多,IO效能也很好,也支援並行IO,記憶體也大。
但是系統的負載卻可能很高,這時候如果啟用較多的並行程式,將會導致系統
整體效能的下降,因為並行執行是典型的“以資源換時間”的例子。所有采用並行
執行的時候確保系統中的可用資源比較充足。
5、整體也個體的關係。
這裡需要注意一點是,並行執行的SQL語句對系統其他SQL語句效能的影響。系統中
資源的總量是固定的,貌似採用虛擬化技術可以動態的調整系統中的總體資源。
但是調整需要時間,另外並是不所有的系統都採用了這種技術,更重要的前提是
money。所有在系統資源總量不變的情況下,你並行執行的SQL語句消耗的資源多了
勢必其他SQL執行可用的資源就減少了,從而導致系統中其他SQL語句的執行效能下降。
所以我們需要做一個tradeoff.
6、什麼樣的SQL語句可以並行的執行。
並不是所有的SQL語句的執行都可以並行執行,如果你不知道SQL語句並行執行
的條件,那麼很可能導致這一的疑問,我採用了並行執行,怎麼效能沒有提高?
7、並行執行不是在做SQL最佳化。
跑出某個結果或者實施某個操作,使用並行執行只是使用更多的資源來換取較短
的執行時間,並不是實施SQL的最佳化。如果採用並行執行的SQL本身有效能問題的話
那麼並行執行將會放大這一問題,影響其他SQL語句的執行。
8、請先測試。
為了確保並行執行能夠滿足你的需求,請先進行測試。
對於oracle parallel SQL 的絕佳材料:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-732619/,如需轉載,請註明出處,否則將追究法律責任。

相關文章