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

猜你喜欢

转载自www.cnblogs.com/zhaoqian49/p/11983287.html