Exadata上一次POC的记录——PDML

联系:QQ(5163721)

标题:Exadata上一次POC的记录——PDML

作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

下面的一次POC中的某2个语句的执行,可以看到除了CTAS创建的表名称不同,其余都是一样:
同样的都是Exadata x3-2,同样的环境(表结构,数据等等),但是执行效率却大相径庭:

SQL1 :CREATE TABLE test1 AS SELECT * FROM LunarTest t WHERE t.col1 =1766

sql1


从执行计划上看,SQL1执行时间了44秒:
1,在select阶段,所有Slave进程以直接路径读的方式并行的从cell上读取数据
2,所有Slave进程并行的将读取的数据发送给Query Coordinator,然后仍然以直接路径读取的方式并行的写入到数据文件
3,Query Coordinator进程从并行数据流中接收数据,并在所有并行写入结束后,将执行结果(Table created)反馈给SQL1

SQL2 :create table test2 as select * from LunarTest t where t.col1 =1766

sql2


从执行计划上看,SQL1执行时间了9.3分钟:
1,在select阶段,所有Slave进程以直接路径读的方式并行的从cell上读取数据
2,所有Slave进程并行的将读取的数据发送给Query Coordinator
3,Query Coordinator进程等待所有Slave进程都执行结束后,将接收到的数据以直接路径度的方式写入到数据文件,将执行结果(Table created)反馈给SQL2


这个2个SQL的区别就在于PDML需要单独enable,缺省的只有SELECT会采用parallel。
也就是说,在执行SQL1之前,我执行了:
alter session force parallel query;
alter session force parallel dml;
alter session force parallel ddl;
.
而在执行SQL2的会话中,我没有enable PDML。

.

此条目发表在 POC和性能调整 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

Exadata上一次POC的记录——PDML》有 1 条评论

  1. yangtingkun 说:

    对于CREATE AS SELECT生效的应该是PARALLEL DDL吧?

yangtingkun 进行回复 取消回复

电子邮件地址不会被公开。 必填项已用 * 标注