天天看點

初試PL/SQL并行程式設計

-----------------------------Cryking原創------------------------------

-----------------------轉載請注明出處,謝謝!------------------------ 

并行處理能大大提高資料的處理速度,它依賴于硬體資源、網絡資源等環境.

并行處理的硬體資源環境分為5大類:

1.傳統的單台計算機、單處理器、單核心的機器.(無法進行并行處理,但是并行程式還是可以運作的,此時就和普通程式一樣了)

2.單台計算機、單處理器、多核心的機器.(目前本人的測試環境,沒錢買多處理器的)

3.單台計算機、多處理器、多核心的機器.

4.叢集系統

5.分布式系統

PS:如何檢視幾個處理器、幾核,常用的軟體就是CPU-Z.

本人的測試機器CPU:

初試PL/SQL并行程式設計

單CPU,雙核心處理器

下面開始,編寫一個普通的管道函數(這裡示範的就是管道函數的并行處理):

注意需要先建立類型EMP_element,如下:

CREATE OR REPLACE TYPE EMP_element as table of varchar2(100);

然後我們建立一個并行處理的管道函數:

留意下啟用并行的關鍵字PARALLEL_ENABLE.

接下來我們構造大表進行測試,根據v$pq_sesstat視圖的結果,我們來判斷資料庫系統是否真的進行了并行處理.

為了使示例更加有說服力,我們再來試一下普通管道函數+HINT強制并行看看:

由于普通函數不支援并行,是以即使+HINT強制并行,系統還是沒有使用并行處理.耗時依然為40多秒.

如果不使用函數,使用普通的SQL,又是可以使用HINT強制并行的,如下:

通過上面的示例可以看到,并行處理可以大大加速資料的處理,幾乎成倍的提升性能.

但并不是并行度為幾,就會提示幾倍的性能,它受硬體環境,優化器内部算法,PL/SQL引擎解析等等的限制.

總之,并行處理給我們帶來的性能提升是很大的,是以在某些場景使用并行程式設計也是很必要的.