Oracle中的高效SQL編寫PARALLEL解析
Oracle 的并行執(zhí)行是一種分而治之的方法. 執(zhí)行一個 SQL 時, 分配多個并行進程同時執(zhí)行數(shù)據(jù)掃描,連接以及聚合等操作, 使用更多的資源(CPU,IO等),得到更快的SQL響應時間。并行執(zhí)行是充分利用硬件資源,處理大量數(shù)據(jù)時的核心技術。
并行使用場景:OLAP系統(tǒng)、OLTP里的諸如CREATE INDEX的操作,加速創(chuàng)建索引,在OLTP系統(tǒng)中要慎用。
什么時候會用到并行:DDL(CREATE INDEX、CREATE TABLE AS等)、DML(UPDATE,DELETE,MERGE,INSERT INTO SELECT等)、SELECT(FULL TABLESCAN,INDEX FAST FULL SCAN,PARTITIONED INDEX RANGE SCAN等)

看下面的例子:并行操作的執(zhí)行計劃:


1)TQ(Table queue) 的編號代表了并行執(zhí)行計劃中, 數(shù)據(jù)分發(fā)的順序。
2)PQ Distribute 列: 數(shù)據(jù)的分發(fā)方式.。
3)In-out 列: 表明數(shù)據(jù)的流動和分發(fā)。
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:
首先需要執(zhí)行:
ALTERSESSION FORCE PARALLEL DML或ALTER SESSION ENABLE PARALLEL DML開啟并行DML
然后執(zhí)行DML語句。
對于INSERTINTO SELECT 的并行操作需要注意:寫別名必須INSERT和SELECT部分都寫,建議不要寫別名則都并行注意表和索引的并行度要設為1,以防自動并行導致性能問題。
到此這篇關于Oracle中的高效SQL編寫PARALLEL解析的文章就介紹到這了,更多相關Oracle的PARALLEL解析內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

網(wǎng)公網(wǎng)安備