Oracle中的高效SQL編寫(xiě)PARALLEL解析
Oracle 的并行執(zhí)行是一種分而治之的方法. 執(zhí)行一個(gè) SQL 時(shí), 分配多個(gè)并行進(jìn)程同時(shí)執(zhí)行數(shù)據(jù)掃描,連接以及聚合等操作, 使用更多的資源(CPU,IO等),得到更快的SQL響應(yīng)時(shí)間。并行執(zhí)行是充分利用硬件資源,處理大量數(shù)據(jù)時(shí)的核心技術(shù)。
并行使用場(chǎng)景:OLAP系統(tǒng)、OLTP里的諸如CREATE INDEX的操作,加速創(chuàng)建索引,在OLTP系統(tǒng)中要慎用。
什么時(shí)候會(huì)用到并行: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í)行計(jì)劃:
1)TQ(Table queue) 的編號(hào)代表了并行執(zhí)行計(jì)劃中, 數(shù)據(jù)分發(fā)的順序。
2)PQ Distribute 列: 數(shù)據(jù)的分發(fā)方式.。
3)In-out 列: 表明數(shù)據(jù)的流動(dòng)和分發(fā)。
PCWC:parallel combine with child.
PCWP:parallel combine with parent.
P->P:parallel to parallel.
P->S:parallel to Serial并行操作寫(xiě)法注意點(diǎn):
1)只寫(xiě)PARALLEL(sales8)則customers部分沒(méi)有并行,從而影響整體并行效率。
2)建議并行寫(xiě)成PARALLEL(8),不要帶別名,則sales和customers都為DOP=8的并行。對(duì)于并行DML:
首先需要執(zhí)行:
ALTERSESSION FORCE PARALLEL DML或ALTER SESSION ENABLE PARALLEL DML開(kāi)啟并行DML
然后執(zhí)行DML語(yǔ)句。
對(duì)于INSERTINTO SELECT 的并行操作需要注意:寫(xiě)別名必須INSERT和SELECT部分都寫(xiě),建議不要寫(xiě)別名則都并行注意表和索引的并行度要設(shè)為1,以防自動(dòng)并行導(dǎo)致性能問(wèn)題。
到此這篇關(guān)于Oracle中的高效SQL編寫(xiě)PARALLEL解析的文章就介紹到這了,更多相關(guān)Oracle的PARALLEL解析內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
