打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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


加入"云和恩墨大讲堂"微信群,参与讨论学习

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入理解Oracle的并行操作(原创)
ORACLE 事件代码
如何加速Oracle大批量数据处理
理解和使用SQL Server中的并行
管理索引的一些原则
数据立方大数据库-DataCube
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服