设为首页 加入收藏

TOP

Oracle开启并行的几种方法(二)
2017-03-30 14:17:22 】 浏览:707
Tags:Oracle 开启 并行 方法
/  #对指定表不使用并行访问


3) /*+ parallel_index(table[,index[,degree]]) */  #对指定的分区索引以指定的并行度去做并行范围扫描


4) /*+ no_parallel_index(table[,index]) */  #对指定的分区索不使用并行访问


5) /*+ pq_distribute(table,out,in) */ #对指定表以out/in所指定的方式来传递数据,这里out/in的值可以是HASH/NONE/BROADCAST/PARTITION中的任意一种如/*+ pq_distribute(table,none,partition) */


把表EMP修改回并行度为1


scott@TEST>alter table emp noparallel;
 
Table altered.
 
scott@TEST>select table_name,degree from user_tables where table_name='EMP';
 
TABLE_NAME            DEGREE
------------------------------ ----------
EMP                1


使用并行Hint执行上之前的SQL


scott@TEST>select /*+ parallel(emp) */* from emp;
 
14 rows selected.
 
 
Execution Plan
----------------------------------------------------------
Plan hash value: 2873591275
 
--------------------------------------------------------------------------------------------------------------
| Id  | Operation        | Name  | Rows | Bytes | Cost (%CPU)| Time    |    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT    |      |    14 |  1218 |    2  (0)| 00:00:01 |  | |        |
|  1 |  PX COORDINATOR      |    |  |  |        |    |    | |        |
|  2 |  PX SEND QC (RANDOM)| :TQ10000 |    14 |  1218 |    2  (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|  3 |    PX BLOCK ITERATOR |      |    14 |  1218 |    2  (0)| 00:00:01 |  Q1,00 | PCWC |        |
|  4 |    TABLE ACCESS FULL| EMP  |    14 |  1218 |    2  (0)| 00:00:01 |  Q1,00 | PCWP |        |
--------------------------------------------------------------------------------------------------------------


从上面的执行计划中可以看出,走的是并行


3、使用alter session命令


使用alter session命令,可以在当前session中强制启用并行查询或并行DML。如果强制启用了并行查询或者并行DML,那就意味着从执行alter session命令强制开启并行的那个时间点开始,在这个session中随后执行的所有SQL都将以并行的方式执行,有如下四种方法在当前session中强制开启并行


1) alter session parallel query


在当前session中强制开启并行查询,没有指定并行度,Oracle使用默认并行度


2) alter session parallel query  parallel n


在当前session中强制开启并行查询,并且指定并行度为n


3) alter session parallel dml


在当前session中强制开启并行DML,没有指定并行度,Oracle使用默认并行度


4) alter session parallel dml  parallel n


在当前session中强制开启并行DML,并且指定并行度为n


表EMP并行度仍为1,在session中强制开启并行:


scott@TEST>select table_name,degree from user_tables where table_name='EMP';
 
TABLE_NAME            DEGREE
------------------------------ ----------
EMP                1
 
scott@TEST>set autotrace traceonly
scott@TEST>alter session force parallel query;
 
Session altered.
 
scott@TEST>select * from emp;
 
14 rows selected.
 
 
Execution Plan
----------------------------------------------------------
Plan hash value: 2873591275
 
-------

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL 5.6.34配置文件详解 下一篇CentOS 7 下mysql-community-5.7...

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目