一、什么时候用并行
在OLAP系统中,当表的数据量很大,一般超过100W,sql执行时间很长超过10分钟,且执行计划正常时考虑使用并行,当然还需要数据库服务器是多核cpu,空闲资源多
二、怎么用并行
大部分的DML(insert/update/delete/merge)、DDL、Query都支持并行操作
QUERY : 强制使用并行,将session的并行度修改为8,alter session force parallel query parallel 8;
或者在 select后面增加 hint /*+ parallel(table_name, 8) */ 只针对这条sql开启并行查询
DML: 只能强制显式使用并行,将session的并行度修改为8,alter session force parallel DML parallel 8;
DDL: 可以强制使用并行,将session的并行度修改为8,alter session force parallel ddlparallel 8;
或者在 ddl 语句后增加 parallel 8,并行创建表或索引后必须将表和索引的并行度改成1
三、使用并行的弊端
1.并行insert会浪费空间,因为默认加了/*+ append*/,直接路径插入,直接加载的数据放在表的高水位(High water Mark:hwm)以上,当直接加载完成后,Oracle 将表的高水位线移到新加入的数据之后
2.并行dml操作的表在当前会话必须提交或回滚后才能再次对其查询或执行dml操作,在其他会话也不能对其进行dml操作,只能查询,否则会报错