溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle 并行案例解析

發(fā)布時間:2020-07-16 17:16:11 來源:網(wǎng)絡 閱讀:474 作者:lych528 欄目:關系型數(shù)據(jù)庫

|   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 
 

執(zhí)行步驟: 
1、并行服務進程TEST表進行全表掃描。 
2、并行服務進程以ITERATOR(迭代)方式訪問數(shù)據(jù)塊,也就是并行協(xié)調(diào)進程分給每個并行服務進程一個數(shù)據(jù)片,在這個數(shù)據(jù)片上,并行服務進程順序地訪問每個數(shù)據(jù)塊(Iterator),所有的并行服務進程將掃描的數(shù)據(jù)塊傳給另一組并行服務進程(父進程)用于做Hash Group操作。 
3、并行服務父進程對子進程傳遞過來的數(shù)據(jù)做Hash Group操作。 
4、并行服務進程(子進程)將處理完的數(shù)據(jù)發(fā)送出去。 
5、并行服務進程(父進程)接收到處理過的數(shù)據(jù)。 
6、合并處理過的數(shù)據(jù),按照隨機的順序發(fā)給并行協(xié)調(diào)進程(QC:Query Conordinator)。 

7、并行協(xié)調(diào)進程將處理結果發(fā)給用戶。


并行機制:|@|首先Oracle會創(chuàng)建一個進程用于協(xié)調(diào)并行服務進程之間的信息傳遞,這個協(xié)調(diào)進程將需要操作的數(shù)據(jù)集(比如表的數(shù)據(jù)塊)分割成很多部分,稱為并行處理單元,然后并行協(xié)調(diào)進程給每個并行進程分配一個數(shù)據(jù)單元。|@||@|比如有四個并行服務進程,他們就會同時處理各自分配的單元,當一個并行服務進程處理完畢后,協(xié)調(diào)進程就會給它們分配另外的單元,如此反復,直到表上的數(shù)據(jù)都處理完畢,最后協(xié)調(diào)進程負責將每個小的集合合并為一個大集合作為最終的執(zhí)行結果,返回給用戶。|@||@|并行處理的機制實際上就是把一個要掃描的數(shù)據(jù)集分成很多小數(shù)據(jù)集,Oracle會啟動幾個并行服務進程同時處理這些小數(shù)據(jù)集,最后將這些結果匯總,作為最終的處理結果返回給用戶。 |@||@|這種數(shù)據(jù)并行處理方式在OLAP系統(tǒng)中非常有用,OLAP系統(tǒng)的表通常來說都是非常大,如果系統(tǒng)的CPU比較多,讓所有的CPU共同來處理這些數(shù)據(jù),效果就會比串行執(zhí)行要高得多。 |@||@|然而對于OLTP系統(tǒng),通常來講,并行并不合適,原因是OLTP系統(tǒng)上幾乎在所有的SQL操作中,數(shù)據(jù)訪問路徑基本上以索引訪問為主,并且返回結果集非常小,這樣的SQL操作的處理速度一般非???,不需要啟用并行。




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI