impdp create index parallel-数据泵并行创建索引

题记在数据泵导入时默认情况下创建索引是不使用并行的,所以这一步会消耗较长的时间,除了人工写脚本并行创建索引外,数据泵在导入时也可以并行创建索引,本文详细介绍了整个测试过程并得出测试结论。

测试环境为11204单实例:

首先创建测试表和测试索引:

然后并行导出,在导入时指定parallel等于4并设置sqlfile参数,查看生成的sql文本:

发现sql文本中并未使用并行:

接下来为了更直接的看出整个过程先开启系统级别的10046事件,再指定parallel等于4导入数据。

此时,在v$pq_slave视图中已经可以查看到并行进程,且并行度为8,并且状态为BUSY,几秒钟之后变成IDLE:

同时会产生8个并行进程的trace文件:

查看dbwn进程的trace文件,显示创建索引时已经指定parallel为4:

如下是p004进程的详细内容:

从trace文件中可以看出在并行创建索引时,产生了2个query slave set,分别是Q10000和Q10001,这时并行度就会乘于2变为8,从执行计划id=8和id=4中分别可以看出,一组用来扫描表,一组用来创建索引。 这也就是为什么我们指定parallel为4,而实际并行度为8的原因。

最后要关掉系统级别的10046事件,不然会产生非常多的trace文件:

测试导入时指定parallel等于1

可以看出数据库未生成并行的trace文件,也就是未并行创建索引:

测试在导出时不使用并行,然后导入时指定parallel参数等于4:

从trace文件可以看出,索引创建时使用了并行:

结论

Oracle ADG上的列式存储支持Oracle ADG上的列式存储支持

1、数据泵在导入时一般情况下只需指定parallel>1即可在创建索引时候使用并行,导入时可以从trace文件中看到数据泵采用并行创建索引; 2、创建索引时并行度可能会等于parallel*2,这是因为oracle产生了两组query slave set,一组用来扫描表,一组用来创建索引; 3、如果数据泵带有sqlfile参数,得到的sql文本中并行度会显示为1,但是在实际导入时是可以并行创建的; 4、导出时未并行导出,导入时只要指定parallel参数同样可以并行创建索引; 5、如果不想并行创建索引,去掉parallel参数,或者指定parallel=1即可。

参考文档: Impdp Parallel Index Creation always creates indexes with degree 1. (Doc ID 1289032.1) Bug 8604502 : INDEXES ARE ALWAYS CREATED WITH PARALLEL DEGREE 1 DURING IMPORT

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Quartz数据库表分析【面试+工作】

共11张表,前6张都是关于各种triggers的信息,后面包括job,悲观锁,调度状态等信息;相关表操作在类StdJDBCDelegate中,相关sql语句在S...

1564
来自专栏web编程技术分享

【php增删改查实例】第十节 - 部门管理模块(新增功能)

1806
来自专栏Danny的专栏

SQL Server 2008 附加数据库时出错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1.8K3
来自专栏Hadoop实操

集群启用Kerberos后对Zookeeper的Znode操作异常分析

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

4305
来自专栏码匠的流水账

springboot2输出metrics到influxdb

本文主要研究一下如何将springboot2的metrics输出到influxdb

3050
来自专栏IT探索

linux下bin安装mysql的问题

“mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pi...

632
来自专栏YG小书屋

hive 插入parquet二级分区表数据倾斜优化

错误: Java Heap Space。或者GC overhead limit exceeded。 原因: Parquet和ORC是列式批处理文件格式。这...

2521
来自专栏C/C++基础

MySQL设置远程访问

在MySQL Server端,执行mysql 命令进入mysql 命令模式。使用grant命令用来建立新用户,指定用户口令并增加用户权限。命令格式如下:

1291
来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

1792
来自专栏pangguoming

CentOS7安装MySQL8

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

6594

扫码关注云+社区