当前位置: 首页 > news >正文

Oracle 并行和 session 数量的

这也就是为什么我们指定parallel为4,而实际并行度为8的原因。

insert create index,发现并行数都是加倍的

Indexes seem always created with parallel degree 1 during import as seen from a sqlfile.

The sql file shows content like:

CREATE INDEX "<SCHEMA_NAME>"."<INDEX_NAME>" ON
"<SCHEMA_NAME>"."<TABLE_NAME>" ("<COLUMN_NAME>")
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING
STORAGE(INITIAL 262144 NEXT 262144 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE
DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "<TABLESPCE_NAME>"
PARALLEL 1 ;

ALTER INDEX "<SCHEMA_NAME>"."<INDEX_NAME>" PARALLEL 24;


The database is version 11.2.0.2 or above where Bug 8604502 has been fixed.

SOLUTION

The issue is discussed in
Bug 10408313 - INDEXES ARE CREATED WITH PARALLEL DEGREE 1 DURING IMPORT
closed with status 'Not a Bug'.

The import job with SQLFILE parameter option cannot use multiple execution streams.
It always executed with parallel 1. Hence its showing the PARALLEL 1 in generated sqlfile and this is an expected behavior.

When you run the import with parallel value and without sqlfile option, then you can see the actual index creation statement with correct parallel value in DW(worker) traces.

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

测试环境为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文件可以看出,索引创建时使用了并行:

结论

1、数据泵在导入时一般情况下只需指定parallel>1即可在创建索引时候使用并行,导入时可以从trace文件中看到数据泵采用并行创建索引;

2、创建索引时并行度可能会等于parallel*2,这是因为oracle产生了两组query slave set,一组用来扫描表,一组用来创建索引;

3、如果数据泵带有sqlfile参数,得到的sql文本中并行度会显示为1,但是在实际导入时是可以并行创建的;

4、导出时未并行导出,导入时只要指定parallel参数同样可以并行创建索引;

5、如果不想并行创建索引,去掉parallel参数,或者指定      parallel=1即可。

                                        

http://www.lryc.cn/news/353757.html

相关文章:

  • Android 版本与 API level 以及 NDK 版本对应
  • 护网经验面试题目原版
  • ipa 覆盖算法测试
  • linuxwindows硬件信息midecod和wmic命令
  • 03. SpringBoot 整合 Redis
  • 01-Linux【准备篇】
  • 在IDEA中配置servlet(maven配置完成的基础下)
  • pyqt6水平布局
  • CLIP论文学习
  • 手把手教大家,怎么查看抖音小店的类目保证金?
  • 5.24作业
  • Linux之LLVM、Clang、Clang++区别及用法实例(六十五)
  • CentOS7 安装 Mysql 5.7:密码查看与修改、更改端口、开机启动
  • 专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(十三)
  • linux替换文件中的字符串
  • 【前端每日基础】day22——js控制结构
  • npm详解
  • ChatGPT-4o 实战 如何快速分析混淆加密和webpack打包的源码
  • 自然资源-各级国土空间总体规划的审查要点及流程总结
  • 电表远传抄表是什么?
  • 【简明指南:Python中的异常处理与稳健代码设计】
  • STM32—HAL-PWM-舵机180(每个频率对应每个角度)
  • MyBatis详细教程!!(入门版)
  • c++ using 关键字
  • AIGC时代算法工程师的面试秘籍(2024.4.29-5.12第十三式) |【三年面试五年模拟】
  • Docker Portainer使用
  • 创新系列-既要保留<a/>标签右键功能, 又不要href导致点击页面刷新, 希望click实现vue-router跳转
  • 【OceanBase诊断调优】—— KVCache 排查手册
  • 核函数的介绍
  • 使用pytorch写一个简单的vae网络用于生成minist手写数字图像