Oracle 中并行度的設(shè)置需要考慮的因素 |
發(fā)布時間: 2012/9/4 17:48:55 |
并行執(zhí)行是Oracle 中一項(xiàng)比較重要的技術(shù),特別是在OLAP系統(tǒng)中,應(yīng)對長期運(yùn)行資源消耗高的SQL語句。并行度的設(shè)置對于使用oracle并行執(zhí)行特性來說是一項(xiàng)關(guān)鍵而復(fù)雜的任務(wù),設(shè)置的不恰當(dāng),可能反而因?yàn)槭褂胦racle 并行執(zhí)行特性而導(dǎo)致系統(tǒng)的性能下降。 Oracle 中并行度的設(shè)置不僅僅是通過幾個參數(shù)的調(diào)整那么簡單,更重要的是明確以下幾個問題。 1、服務(wù)器的CPU核心數(shù)。-
2、訪問的數(shù)據(jù)在磁盤上面是如何組織的。 如果是存儲在單個磁盤上面,因?yàn)椴⑿羞M(jìn)程或者線程要排隊(duì)等待訪問磁盤,會削弱并行處理的優(yōu)勢,如果要訪問的數(shù)據(jù)按照能夠并行訪問的方式組織在多個磁盤設(shè)備上面(并不是數(shù)據(jù)組織到多個磁盤就能夠并行訪問的),那么并行的優(yōu)勢將會很明顯。 3、要采用并行執(zhí)行的SQL是什么性質(zhì)的。 那些長期運(yùn)行或者資源密集型的SQL語句,才能夠在并行執(zhí)行中獲得益處。 那些短小的SQL語句并不是適合采用并行執(zhí)行。因?yàn)槌跏蓟蛥f(xié)調(diào)多個并行進(jìn)程存在一定的開銷。所有說事務(wù)性的語句不適合采用并行執(zhí)行,并行執(zhí)行更多的場合是使用在OLAP系統(tǒng)中。 注:系統(tǒng)中不可能所有的SQL語句都采用并行執(zhí)行,也沒有這個必要。 4、系統(tǒng)的負(fù)載。 即使你的系統(tǒng)中CPU核心數(shù)很多,IO性能也很好,也支持并行IO,內(nèi)存也大。 但是系統(tǒng)的負(fù)載卻可能很高,這時候如果啟用較多的并行進(jìn)程,將會導(dǎo)致系統(tǒng)整體性能的下降,因?yàn)椴⑿袌?zhí)行是典型的“以資源換時間”的例子。所有采用并行執(zhí)行的時候確保系統(tǒng)中的可用資源比較充足。 5、整體也個體的關(guān)系。 這里需要注意一點(diǎn)是,并行執(zhí)行的SQL語句對系統(tǒng)其他SQL語句性能的影響。系統(tǒng)中資源的總量是固定的,貌似采用虛擬化技術(shù)可以動態(tài)的調(diào)整系統(tǒng)中的總體資源。 但是調(diào)整需要時間,另外并是不所有的系統(tǒng)都采用了這種技術(shù),更重要的前提是money。所有在系統(tǒng)資源總量不變的情況下,你并行執(zhí)行的SQL語句消耗的資源多了勢必其他SQL執(zhí)行可用的資源就減少了,從而導(dǎo)致系統(tǒng)中其他SQL語句的執(zhí)行性能下降。 所以我們需要做一個tradeoff. 6、什么樣的SQL語句可以并行的執(zhí)行。 并不是所有的SQL語句的執(zhí)行都可以并行執(zhí)行,如果你不知道SQL語句并行執(zhí)行的條件,那么很可能導(dǎo)致這一的疑問,我采用了并行執(zhí)行,怎么性能沒有提高? 7、并行執(zhí)行不是在做SQL優(yōu)化。 跑出某個結(jié)果或者實(shí)施某個操作,使用并行執(zhí)行只是使用更多的資源來換取較短的執(zhí)行時間,并不是實(shí)施SQL的優(yōu)化。如果采用并行執(zhí)行的SQL本身有性能問題的話那么并行執(zhí)行將會放大這一問題,影響其他SQL語句的執(zhí)行。 8、請先測試。 為了確保并行執(zhí)行能夠滿足你的需求,請先進(jìn)行測試。 對于Oracle parallel SQL 的絕佳材料:
本文出自:億恩科技【prubsntakaful.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |