设为首页 加入收藏

TOP

Oracle开启并行的几种方法(一)
2017-03-30 14:17:22 】 浏览:703
Tags:Oracle 开启 并行 方法

并行执行是同时开启多个进程/线程来完成同一个任务,并行执行的每一个进程/线程都会消耗额外的硬件资源,所以并行执行的本质就是以额外的硬件资源消耗来换取执行时间的缩短。这里的额外硬件资源消耗是指对数据库服务器上多个CPU、内存、从个I/O通道,甚至是RAC环境下多个数据库节点的额外利用。


1、更改目标表的并行度


有两种方法修改目标表的并行度


alter table table_name parallel;


alter table table_name parallel n;


其中方法1 是把指定表的并行度修改为默认值,方法2是把指定表的并行度修改为n;


查看表EMP当前的并行度为1


scott@TEST>select table_name,degree from user_tables where table_name='EMP';
 
TABLE_NAME            DEGREE
------------------------------ ----------
EMP                1


想用默认的并行度去访问表EMP


scott@TEST>alter table emp parallel;
 
Table altered.
 
scott@TEST>select table_name,degree from user_tables where table_name='EMP';
 
TABLE_NAME            DEGREE
------------------------------ ----------
EMP              DEFAULT
 
scott@TEST>set autotrace traceonly
scott@TEST>select * 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 |        |
--------------------------------------------------------------------------------------------------------------
.....


从上面的执行计划中可以看出,走的是对表EMP的全表扫描,PX...表示的就是走的并行


默认并行度的算法如下:


默认并行度=parallel_threads_per_cpu*cpu_count


如果想对表开启8个并行度则执行:alter table emp parallel 8;


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


2、使用并行Hint


有如下一些并行Hint可以用来控制是否启用并行及指定并行度


1) /*+ parallel(table[,degree]) */  #用于指定并行度去访问指定表,如果没有指定并行度degree,则使用Oracle默认并行度


2) /*+ noparallel(table) *

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目