Oracle中的append parallel關鍵字


append parallel關鍵字
 並發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 ;
 轉自於:https://blog.csdn.net/weixin_30681121/article/details/96447575


免責聲明!

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



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