oracle append parallel,oracle 优化之parallel和append
并發(fā)parallel和append
/*+append*/?注意事項
1.在非歸檔模式中 nologing和?logging 都不會產(chǎn)生大量的redo日志,但是在歸檔模式中如果是logging 表會產(chǎn)生大量的redo日志 但是nologging表就不會產(chǎn)生.
(建議在歸檔模式中大量插入數(shù)據(jù)的時候先把表改成nologging模式'ALTER TABLE table_name NOLOGGING' 然后 等數(shù)據(jù)插入完事在'ALTER TABLE?table_name LOGGING')
2.append 增加數(shù)據(jù)的時候 不會檢查HWM中是否有空閑塊,會直接往HWM之上一個新塊當(dāng)中插入數(shù)據(jù),所以一定要批量插入,要不然每一條數(shù)據(jù)就會增加一個新塊 十分浪費(fèi)空間.
測試環(huán)境11g
300萬數(shù)據(jù)
insert /*+append*/ into? ? 8秒;
insert into? 190秒;
效率確實(shí)提高很多.
parallel dml (pdml)注意事項
1.pdml 必須顯示的打開和關(guān)閉否則不生效(加上hint注釋的時候執(zhí)行計劃的顯示是一樣的但是并沒有并發(fā)dml)
ALTER SESSION ENABLE PARALLEL DML;
ALTER SESSION DISABLE PARALLEL DML;
在不打開并發(fā)dml情況下600萬數(shù)據(jù)
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
完全不用并發(fā)HINT?/*+parallel(A,10)*/反而快
insert into?TEST select * from?TEST_TEM;36秒
在打開pdml情況下600萬數(shù)據(jù)
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
完全不用并發(fā)HINT?/*+parallel(A,10)*/
insert into?TEST select * from?TEST_TEM;39秒(每次有少許差異).
在并發(fā)INSERT的時候,數(shù)據(jù)是被使用APPEND方式插入到表中,如果需要常規(guī)方式插入,需要加上noappend提示.
parallel query
select?/*+parallel(t,8)*/? * from mxq t ;
總結(jié)
以上是生活随笔為你收集整理的oracle append parallel,oracle 优化之parallel和append的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BEC高级口语分册
- 下一篇: OpenBSD身份验证绕过和权限提升漏洞