oracle 優化之parallel和append


並發parallel和append

/*+append*/ 注意事項

1.在非歸檔模式中 nologing和 logging 都不會產生大量的redo日志,但是在歸檔模式中如果是logging 表會產生大量的redo日志 但是nologging表就不會產生.

(建議在歸檔模式中大量插入數據的時候先把表改成nologging模式'ALTER TABLE table_name NOLOGGING' 然后 等數據插入完事在'ALTER TABLE table_name LOGGING')

2.append 增加數據的時候 不會檢查HWM中是否有空閑塊,會直接往HWM之上一個新塊當中插入數據,所以一定要批量插入,要不然每一條數據就會增加一個新塊 十分浪費空間.

測試環境11g

300萬數據

insert /*+append*/ into    8秒;

insert into  190秒;

效率確實提高很多.

parallel dml (pdml)注意事項

 1.pdml 必須顯示的打開和關閉否則不生效(加上hint注釋的時候執行計划的顯示是一樣的但是並沒有並發dml)

ALTER SESSION ENABLE PARALLEL DML;
ALTER SESSION DISABLE PARALLEL DML;

 在不打開並發dml情況下600萬數據

HINT 放在不同位置的變化不大

insert into /*+parallel(A,10)*/ TEST A SELECT * FROM TEST_TEM B;     44S

insert into TEST A SELECT/*+parallel(B,10)*/  * FROM TEST_TEM B;     41S

insert into /*+parallel(A,10)*/TEST A SELECT/*+parallel(B,10)*/  * FROM TEST_TEM B;     49S

完全不用並發HINT /*+parallel(A,10)*/反而快

insert into TEST select * from TEST_TEM;36秒

在打開pdml情況下600萬數據

alter session enable parallel dml;

 HINT 放在不同位置的變化很大

 insert into /*+parallel(A,10)*/ TEST A SELECT * FROM TEST_TEM B;      10s

insert into TEST A SELECT/*+parallel(B,10)*/  * FROM TEST_TEM B;       24S

 insert into /*+parallel(A,10)*/TEST A SELECT/*+parallel(B,10)*/  * FROM TEST_TEM B;      1S

完全不用並發HINT /*+parallel(A,10)*/

insert into TEST select * from TEST_TEM;39秒(每次有少許差異).

在並發INSERT的時候,數據是被使用APPEND方式插入到表中,如果需要常規方式插入,需要加上noappend提示.

parallel query

select /*+parallel(t,8)*/  * from mxq t ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM