操作内并行使用的slave process数量就是并行度dop,indextable都有dop 作为默认操作并行度default 1表示不使用并行处理 SQL create table t1 (a int) parallel 6; Table created. SQL select degree from user_tables where table_name=’T1′; DEGREE ——

操作内并行使用的slave process数量就是并行度dop,index&table都有dop 作为默认操作并行度default 1表示不使用并行处理

SQL> create table t1 (a int) parallel 6;

Table created.

SQL> select degree from user_tables where table_name=’T1′;

DEGREE

———-

6

SQL> alter table t1 parallel 3;

Table altered.

SQL> select degree from user_tables where table_name=’T1′;

DEGREE

———-

3

*禁用alter table(index) parallel 1 (noprallel)

#create 时候使用parallel不仅会在创建table&index时使,后续的操作ddl,dml也会使用(如果只想建表时使用,建好后修改)

SQL> create table t2 (a int) parallel;(未指定并行度)

Table created.

SQL> select degree from user_tables where table_name=’T2′;

DEGREE

———-

DEFAULT ~~~这样使用default并行度=(cpu_count*parallel_threads_per_cpu)

SQL> show parameter cpu_count

NAME TYPE VALUE

———————————— ———– ——————————

cpu_count integer 2

SQL> show parameter parallel_thread

NAME TYPE VALUE

———————————— ———– ——————————

parallel_threads_per_cpu integer 2

SQL>

SQL> insert into t2 values (1);

1 row created.

SQL> commit;

Commit complete.

SQL> set autotrace trace exp

SQL> select * from t2;

Execution Plan

———————————————————-

Plan hash value: 1216610266

——————————————————————————–

——————————

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time

| TQ |IN-OUT| PQ Distrib |

——————————————————————————–

——————————

| 0 | SELECT STATEMENT | | 1 | 13 | 2 (0)| 00:00:01

| | | |

| 1 | PX COORDINATOR | | | | |

| | | |

| 2 | PX SEND QC (RANDOM)| :TQ10000 | 1 | 13 | 2 (0)| 00:00:01

| Q1,00 | P->S | QC (RAND) |

| 3 | PX BLOCK ITERATOR | | 1 | 13 | 2 (0)| 00:00:01

| Q1,00 | PCWC | |

| 4 | TABLE ACCESS FULL| T2 | 1 | 13 | 2 (0)| 00:00:01

| Q1,00 | PCWP | |

——————————————————————————–

——————————

Note

—–

– dynamic sampling used for this statement

SQL>

SQL> set autotrace off

SQL> select process from v$pq_tqstat;

no rows selected

可以看到 用set autotrace 后 查v$pq_tqstat norows ,这是2个原因造成的

1.set autotrace的原理

开启autotrace时候 一个process对应 2个 session

通常情况下是一个 session对应一个 server processs,但SErVER PORCESSS 可以对应多个session

SQL> conn xh/a831115

已连接。

SQL> select distinct sid from v$mystat;

SID

———-

144

SQL> select username, sid, serial#, server, paddr, status from v$session where s

id=144;

USERNAME SID SERIAL# SERVER PADDR STATUS

—————————— ———- ———- ——— ——– ——–

XH 144 27 DEDICATED 20E4CC3C INACTIVE

SQL> select program ,addr from v$process where addr=(select paddr from v$session

where sid=144);

PROGRAM ADDR

—————————————————————- ——–

ORACLE.EXE (SHAD) 20E4CC3C

SQL> select sid from v$session where paddr=’20E4CC3C’;

SID

———-

144

SQL> set autotrace on

SQL> select sid from v$session where paddr=’20E4CC3C’;

SID

———-

144

154

2.v$pq_tqstat只提供当前session最后一次并行执行sql语句的信息

综合2点可以看出set autotrace 最后一个session 是 执行计划的,所以v$pq_tqstat为no rows

所以 直接执行

SQL> select * from t2;

A

———-

1

SQL> SELECT dfo_number, tq_id, server_type, process, num_rows, bytes

2 FROM v$pq_tqstat

3 ORDER BY dfo_number, tq_id, server_type DESC, process;

DFO_NUMBER TQ_ID SERVER_TYP PROCESS NUM_ROWS BYTES

———- ———- ———- ———- ———- ———-

1 0 Producer P000 1 24

1 0 Producer P001 0 20

1 0 Producer P002 0 20

1 0 Producer P003 0 20

1 0 Consumer QC 1 84

可以看到启动了4个slave process,这4个process=cpu_count*parallel_threads_per_cpu(2*2)

相关的hint:

parallel(10g,11g),no_parallel(10g,11g),parallel_index(10g,11g,9i),no_parallel_index(10g,11g)

noparallel(9i),noparallel_index(9i)

##需要知道并行hint只是告诉优化器可以使用并行,但不是强制使用并行一切还是从cost出发(重点)

declare

begin

for i in 1..1000 loop

insert into t2 values(i);

end loop;

commit;

end;

SQL> explain plan set statement_id=’t2_pp’ for select /*+parallel(t2 2)*/* from t2 where a>900;

Explained.

SQL> create index t2_id on t2 (a);

Index created.

SQL> explain plan set statement_id=’t2_id’ for select /*+parallel(t2 2)*/* from t2 where a>900;

Explained.

SQL> set linesize 1000

SQL> select * from table (dbms_xplan.display(null,’t2_pp’));

PLAN_TABLE_OUTPUT

————————————————————————————————————————————————————————————————————————————————————————————————————

Plan hash value: 1216610266

————————————————————————————————————–

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |

————————————————————————————————————–

| 0 | SELECT STATEMENT | | 100 | 1300 | 2 (0)| 00:00:01 | | | |

| 1 | PX COORDINATOR | | | | | | | | |

| 2 | PX SEND QC (RANDOM)| :TQ10000 | 100 | 1300 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |

| 3 | PX BLOCK ITERATOR | | 100 | 1300 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |

|* 4 | TABLE ACCESS FULL| T2 | 100 | 1300 | 2 (0)| 00:00:01 | Q1,00 | PCWP | |

————————————————————————————————————–

PLAN_TABLE_OUTPUT

————————————————————————————————————————————————————————————————————————————————————————————————————

Predicate Information (identified by operation id):

—————————————————

4 – filter(“A”>900)

Note

—–

– dynamic sampling used for this statement

20 rows selected.

SQL> select * from table (dbms_xplan.display(null,’t2_id’));

PLAN_TABLE_OUTPUT

————————————————————————————————————————————————————————————————————————————————————————————————————

Plan hash value: 523330294

————————————————————————–

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

————————————————————————–

| 0 | SELECT STATEMENT | | 100 | 1300 | 2 (0)| 00:00:01 |

|* 1 | INDEX RANGE SCAN| T2_ID | 100 | 1300 | 2 (0)| 00:00:01 |

————————————————————————–

Predicate Information (identified by operation id):

—————————————————

PLAN_TABLE_OUTPUT

————————————————————————————————————————————————————————————————————————————————————————————————————

1 – access(“A”>900)

Note

—–

– dynamic sampling used for this statement

17 rows selected.

可以看到 即使在使用并行与走index时cost一样时候还是选择了走index(cost表面一样,若使用trace alter session set events ’10053 trace name context forever’;看的更详细,并行cpu cost要高些,所以选择了走index,所以hint parallel,parallel_index只是告诉query optimizer

可以考虑并行 不是强制使用)

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql提高并行并行_oracle 并行之并行度篇相关推荐

  1. mysql mts_MySQL进一步完善可用并行复制-MTS并行增量的应用-爱可生

    原标题: MySQL进一步完善可用并行复制-MTS并行增量的应用-爱可生 MTS 并行增量应用 MySQL 的复制延迟在早期版本一直存在,MySQL 5.6.3 版本后开始支持并行复制,并在 5.7 ...

  2. MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)

    昨天花了点时间整理了下并行复制在5.6,5.7中的一些差别和测试,当然只是一个开始,因为里面还有不少需要完善的部分,总体的感觉来看MySQL 5.7里的并行复制改进很大,能够极大提高效率,充分利用资源 ...

  3. 【MySQL】单表支持并行导出的工具--mydumper

    [MySQL]单表支持并行导出的工具–mydumper 下载和安装: https://github.com/maxbube/mydumper RHEL6.5源码安装mydumper 0.9.5: yu ...

  4. oracle plsql开启并行,Oracle开启并行的几种方法

    并行执行是同时开启多个进程/线程来完成同一个任务,并行执行的每一个进程/线程都会消耗额外的硬件资源,所以并行执行的本质就是以额外的硬件资源消耗来换取执行时间的缩短.这里的额外硬件资源消耗是指对数据库服 ...

  5. oracle 并行执行 杀掉会话,oracle – 为什么即使我禁用并行DML和并行DDL也会创建并行会话...

    READ和WRITE并行性并不总是捆绑在一起. alter session disable parallel dml;仅禁用语句的WRITE部分的并行性. READ部分可能仍然并行运行.由于这是MER ...

  6. 第二章:并行硬件和并行软件

    第二章:并行硬件和并行软件 背景知识 ​ 冯诺依曼结构:内存与CPU分开,CPU分为控制单元和算术逻辑单元,内存的速度限制了CPU的速度 ​ 进程.多任务和线程:没啥好说的,操作系统都有 ​ 对冯·诺 ...

  7. 任务并行VS数据并行

    并行计算中,有两种并行的方法:任务并行(task-parallelism)和数据并行(data-parallelism). 任务并行:将许多可以解决问题的任务分割,然后分布在一个或者多个核上进行程序的 ...

  8. Java并行编程–从并行任务集获取反馈

    Java并行编程–从并行任务集获取反馈 在并行任务启动后,强制性地从并行任务得到反馈. 假想有一个程序,可以发送批邮件,还使用了多线程机制.你想知道有多少邮件成功发送吗?你想知道在实际发送过程期间,这 ...

  9. 模型并行,数据并行,参数平均,ASGD

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 2017年3 月,谷歌大脑负责人 Jeff Dean 在 UCSB 做了一场题为<通过大规模深度学习构 ...

  10. 分布式机器学习系统笔记(一)——模型并行,数据并行,参数平均,ASGD

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 文章索引::"机器学 ...

最新文章

  1. 我同事说我写代码像写诗
  2. Leetcode 39 组合总和 (每日一题 20210806)
  3. Oracle中nolog干什么用的,在oracle中,sqlplus / nolog是做什么用的
  4. Quartz 框架快速入门(三)
  5. 翻译:如何用Cocos2d来开发简单的IPhone游戏教程
  6. html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~
  7. Android 计算Bitmap大小
  8. chromium浏览器_Chromium版Edge浏览器正式上线:安装包仅2.2MB
  9. php下intval()和(int)转换使用与区别
  10. C# 4.0 新特性dynamic、可选参数、命名参数等
  11. 修改Tomcat编码方式的两种方法
  12. vuex webpack 配置_vue+webpack切换环境和打包之后服务器配置
  13. hello python jpush_Python人脸识别 + 手机推送,老板来了你就会收到短信提示
  14. delphi 获取数组长度_C++可变长的数组,老司机手把手教你实现!
  15. SqlSessionFactory和SqlSessionTemplate
  16. IOS逆向-静态分析
  17. word文档删除空白页,选中空白页面按住 delete
  18. Linux系统下安装Chrome浏览器
  19. excel中插入的图表保存时提示 无法保存 html,excel表格保存不了的解决方法步骤...
  20. BeeconX路由器是什么牌子?BeeconX路由器怎么样?

热门文章

  1. SM30需要传输请求
  2. 一直觉得饿是什么问题
  3. ABAP:利用SAP定时器自动刷新LIST
  4. java entries_Java leveldb遍历特定前缀的entries
  5. mysql gui tools 问题_Navicat与MySQL GUI Tools管理工具的优缺点对比
  6. java pattern用法_Java Pattern和Matcher用法
  7. html中index.css里面写什么,css中z-index是什么意思?
  8. python方格染色_判定二部图的着色算法(Python),题,染色法,判断,二分
  9. 关于Python中if、for、with、list、dict的练习题
  10. Python四种形式模块的形式与调用