Oracle中的高效SQL編寫PARALLEL解析
Oracle 的并行執行是一種分而治之的方法. 執行一個 SQL 時, 分配多個并行進程同時執行數據掃描,連接以及聚合等操作, 使用更多的資源(CPU,IO等),得到更快的SQL響應時間。并行執行是充分利用硬件資源,處理大量數據時的核心技術。
并行使用場景:OLAP系統、OLTP里的諸如CREATE INDEX的操作,加速創建索引,在OLTP系統中要慎用。
什么時候會用到并行:DDL(CREATE INDEX、CREATE TABLE AS等)、DML(UPDATE,DELETE,MERGE,INSERT INTO SELECT等)、SELECT(FULL TABLESCAN,INDEX FAST FULL SCAN,PARTITIONED INDEX RANGE SCAN等)
看下面的例子:并行操作的執行計劃:
1)TQ(Table queue) 的編號代表了并行執行計劃中, 數據分發的順序。
2)PQ Distribute 列: 數據的分發方式.。
3)In-out 列: 表明數據的流動和分發。
PCWC:parallel combine with child.
PCWP:parallel combine with parent.
P->P:parallel to parallel.
P->S:parallel to Serial并行操作寫法注意點:
1)只寫PARALLEL(sales8)則customers部分沒有并行,從而影響整體并行效率。
2)建議并行寫成PARALLEL(8),不要帶別名,則sales和customers都為DOP=8的并行。對于并行DML:
首先需要執行:
ALTERSESSION FORCE PARALLEL DML或ALTER SESSION ENABLE PARALLEL DML開啟并行DML
然后執行DML語句。
對于INSERTINTO SELECT 的并行操作需要注意:寫別名必須INSERT和SELECT部分都寫,建議不要寫別名則都并行注意表和索引的并行度要設為1,以防自動并行導致性能問題。
到此這篇關于Oracle中的高效SQL編寫PARALLEL解析的文章就介紹到這了,更多相關Oracle的PARALLEL解析內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!