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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐