1)oracle 的并行执行是一种分而治之的方法. 执行一个 sql 时, 分配多个并行进程同时执行数据扫描,连接以及聚合等操作, 使用更多的资源(cpu,io等),
得到更快的
sql
响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。
2)并行使用场景:olap系统、oltp里的诸如create index的操作,加速创建索引,在oltp系统中要慎用。
3)什么时候会用到并行:ddl(create index、create table as等)、dml(update,delete,merge,insert into select等)、select(full table
scan,index fast full scan,partitioned index range scan等)
看下面的例子:
并行操作的执行计划:
1)tq(table queue) 的编号代表了并行执行计划中, 数据分发的顺序。
2)pq distribute 列: 数据的分发方式.。
3)in-out 列: 表明数据的流动和分发。
pcwc:
parallel combine with child.
pcwp:
parallel combine with parent.
p->p:
parallel to parallel.
p->s:
parallel to serial
并行操作写法注意点:
1)只写parallel(sales
8)则customers部分没有并行,从而影响整体并行效率。
2)建议并行写成parallel(8),不要带别名,则sales和customers都为dop=8的并行。
对于并行dml:
首先需要执行:
alter
session force parallel dml或alter session enable parallel dml开启并行dml
然后执行dml语句。
对于insert
into select 的并行操作需要注意:写别名必须insert和select部分都写,建议不要写别名则都并行
注意表和索引的并行度要设为1,以防自动并行导致性能问题。
阅读(450) | 评论(0) | 转发(0) |