oracle并行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle并行相关的知识,希望对你有一定的参考价值。
并行和并发的区别
1. 并发(Concurrency)
一心多用,同时执行通常不相关的各种任务
2. 并行(Parallelism)
并行兵分几路程序是用来解决一个单一任务的,将一个任务分为多段处理。
数据库的并行
将一个工作分成多个块,有不同的进程同时处理,处理完成后做数据汇总。
用户建立连接 -》
数据库启动server process -》
当并发请求发起查询请求时,当前的process 变为协调进程,并创建多个子进程,让子进程处理数据-》
子进程处理数据结束后将结果-》
返回给协调进程。
并行度的设置,需要模拟业务操作,并测试才能得到最有效的并行度设置。
并行度
parallel(c,2) :并行度为2, 代表每个step 的并行度为2
有查询是并行度为2;
当有排序时,排序也有并行度
当有排序时,会继续使用查询时的进程
执行计划参数特殊表述:
PX COORDINATOR : 并发协调器
PX BLOCK ITERATOR: 并发块的迭代,将任务分成多个子任务
PX SEND RANGE : 发送执行下一步
PX RECEIVE : 协调器接收执行结果
PX SEND QC :发送给协调器
IN-OUT
P->P 两组并行的线程发数据
P->S 并行往串行发数据
S->P 串行往并行发数据
PCWP 在相同并行进程里完成(父进程)
PCWC 在相同并发现场里完成(子进程)
获取数据库sql的并行度
select * from v$px_sessoin.degree 动态的结果
select * from v$pq_sqstat
并行初始化参数:
PARALLEL_ADAPTIVE_MULTI_USER 根据用户数决定并系数,默认为开启防止并大太大对系统产生影响
PARALLEL_MAX_SERVERS :最大启动的并行数,不能超过该值
PARALLEL_MINE_SERVERS: 用途是告诉Oracle需要在启动实例时就启动多少个并行进程并保留在内存中,目的是为了每次查询创建进程的时间。
ARALLEL_AUTOMATIC_TUNING:自动调整是否并行,并行度等,默认为关闭
11g
PARALLEL_DEGREE_LIMIT : 并行度设置的限制
PARALLEL_DEGREE_POLICY:并行策略
11g之前在表上设置并行度,则执行的sql会根据设置的并行度,使用并行,该参数可以自动调整并行度
manual(dufault):不需要自动调整
limited:表或索引有固定值,则还是用设置的并行度,当使用默认并行度时,则oracle会自动调整。
auto:所有的并行都自动调整。
PARALLEL_FORCE_LOCAL:rac 下当前实例下执行
PARALLEL_MIN_TIME_THRESHOLD: 并行时间执行超过该时间就不在执行
PARALLEL_SERVERS_TARGET: 尽可能并行数在target之间设置并行数, 类似PARALLEL_MAX_SERVERS
PARALLEL_EXECUTION_MESSAGE_SIZE:并行进程发送数据的大小
并行度的设置
1. 设置session状态(Alter session force parallel query)
例如:
Alter session force parallel query parallel 8;
Alter session force parallel DML parallel n;
2. 设置表的并行度(Alter table tab1 parallel n)
Alter table qz_hdsj_fk parallel 8 ;
create index idx_qz_hdsj_fk on qz_hdsj_fk(sjclzt) tablespace TS_GS_SBF_DATA parallel 4;
alter index GS_SBF.IDX_QZ_HDSJ_SJYXQ_SJCLZT noparallel;(取消并行度)
3. 使用hint设置并行度
UPDATE /*+ PARALLEL(tab1,4) */ qz_hdsj_fkSET c1=c1+1;
INSERT /*+ PARALLEL(tbl_ins,2) */ INTO qz_hdsj_fk
SELECT /*+ PARALLEL(tbl_sel,4) */ * FROM qz_hdsj_fk;
DELETE /*+ PARALLEL (t1, 2) */ FROM qz_hdsj_fk
并行度优先级:
Hint > session > object
如果没有设置将执行默认并行度
create index idx_qz_hdsj_fk on qz_hdsj_fk(sjclzt) tablespace TS_GS_SBF_DATA parallel 4;
11R2在RAC环境下优化 IN-MEMORY PARALLEL EXECUTION
在执行并行操作之前,将数据分块并在不同的节点处理各自块的数据,在节点间减少通讯。
以上是关于oracle并行的主要内容,如果未能解决你的问题,请参考以下文章