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