利用並行提高sql執行效率(轉)

47328983發表於2012-01-05
系統一共有4個CPU
首先開啟session的並行
ALTER SESSION ENABLE PARALLEL DML;

建立一個測試表並帶上並行屬性,測試表記錄數7541292
create table test_tableA
tablespace TBS_DATA
PARALLEL
as select * from tableA;

此時表的屬性是並行的,DML操作也將進行並行
及當前對該表的DML操作,即使不帶上PARALLEL的hint也預設並行執行的

修改表的屬性為NOPARALLEL
alter table test_tableA NOPARALLEL;

執行下面的語句,檢查session並沒有多個併發程式
insert into test_tableA select * from tableA;

執行帶並行的hint,可以在session看到有4個併發程式
insert /*+ PARALLEL(test_tableA) */
into test_tableA
select * from tableA;

--Executed in 109.448 seconds
commit;

普通方式delete全表資料
delete test_tableA;
--Executed in 236.4 seconds
commit;

select部分也帶上並行hint,雖然並行度還是4,但執行效率更高
insert /*+ PARALLEL(test_tableA) */
into test_tableA
select /*+ PARALLEL(tableA) */ * from tableA;

--Executed in 28.351 seconds
commit;

並行delete效率也比普通的要高不少
delete /*+ PARALLEL(test_tableA) */ test_tableA;
--Executed in 144.648 seconds
commit;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-714463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章