您好,登錄后才能下訂單哦!
| 0 | SELECT STATEMENT | | 107 | 2782 | 3 (34)| 00:00:01 | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 107 | 2782 | 3 (34)| 00:00:01 | Q1,01 | P->S | QC (RAND) |
| 3 | HASH GROUP BY | | 107 | 2782 | 3 (34)| 00:00:01 | Q1,01 | PCWP | |
| 4 | PX RECEIVE | | 107 | 2782 | 3 (34)| 00:00:01 | Q1,01 | PCWP | |
| 5 | PX SEND HASH | :TQ10000 | 107 | 2782 | 3 (34)| 00:00:01 | Q1,00 | P->P | HASH |
| 6 | HASH GROUP BY | | 107 | 2782 | 3 (34)| 00:00:01 | Q1,00 | PCWP | |
| 7 | PX BLOCK ITERATOR | | 107 | 2782 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |
| 8 | TABLE ACCESS FULL| TEST | 107 | 2782 | 2 (0)| 00:00:01 | Q1,00 | PCWP
執行步驟:
1、并行服務進程TEST表進行全表掃描。
2、并行服務進程以ITERATOR(迭代)方式訪問數據塊,也就是并行協調進程分給每個并行服務進程一個數據片,在這個數據片上,并行服務進程順序地訪問每個數據塊(Iterator),所有的并行服務進程將掃描的數據塊傳給另一組并行服務進程(父進程)用于做Hash Group操作。
3、并行服務父進程對子進程傳遞過來的數據做Hash Group操作。
4、并行服務進程(子進程)將處理完的數據發送出去。
5、并行服務進程(父進程)接收到處理過的數據。
6、合并處理過的數據,按照隨機的順序發給并行協調進程(QC:Query Conordinator)。
7、并行協調進程將處理結果發給用戶。
并行機制:|@|首先Oracle會創建一個進程用于協調并行服務進程之間的信息傳遞,這個協調進程將需要操作的數據集(比如表的數據塊)分割成很多部分,稱為并行處理單元,然后并行協調進程給每個并行進程分配一個數據單元。|@||@|比如有四個并行服務進程,他們就會同時處理各自分配的單元,當一個并行服務進程處理完畢后,協調進程就會給它們分配另外的單元,如此反復,直到表上的數據都處理完畢,最后協調進程負責將每個小的集合合并為一個大集合作為最終的執行結果,返回給用戶。|@||@|并行處理的機制實際上就是把一個要掃描的數據集分成很多小數據集,Oracle會啟動幾個并行服務進程同時處理這些小數據集,最后將這些結果匯總,作為最終的處理結果返回給用戶。 |@||@|這種數據并行處理方式在OLAP系統中非常有用,OLAP系統的表通常來說都是非常大,如果系統的CPU比較多,讓所有的CPU共同來處理這些數據,效果就會比串行執行要高得多。 |@||@|然而對于OLTP系統,通常來講,并行并不合適,原因是OLTP系統上幾乎在所有的SQL操作中,數據訪問路徑基本上以索引訪問為主,并且返回結果集非常小,這樣的SQL操作的處理速度一般非常快,不需要啟用并行。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。