ITPub博客

首页 > 数据库 > Oracle > oracle的并行——20170103

oracle的并行——20170103

翻译 Oracle 作者:lshj85 时间:2017-01-03 20:04:11 0 删除 编辑
改善并行的优化手段:
1.重新调度并行SQL,以便它们不会试图并发执行。如果PARALLEL_DEGREE_POLICY被设成AUTO,oracle11G发行版本2可以自动重新调度SQL。
 
2.调整并行配置的参数以允许更大的并发并行。可能通过增加PARALLEL_THREADS_PER_CPU或PARALLEL_MAX_SERVERS来实现此目的。风险是并行执行的数量将大于系统能够支持的个数,导致SQL性能的下降。 
3.增加数据库服务器的能力,可以增加CPU        的个数,RAC集群的实例个数和磁盘阵列的磁盘个数。 
4.调整PARALLEL_MIN_PERCENT允许SQL以减少的并行数运行,而不是发出一个错误。 


V$PQ_TQSTAT  可以看到每个集合间传输数据的信息 
V$PQ_SLAVE   
V$PX_SESSION 实时得到系统正在发生的并行执行的视图,可以结合V$SESSION,V$SQL的关联来查询 
V$SYSSTAT    包含一些与并行查询降级有关的统计数据 

并行过程中的串行,会影响整体的性能 

高效的并行依赖于并行子进程处理的均匀分布,可以使用V$PQ_TQSTAT视图来评估并行子进程的负载均衡的效率。 

PARALLEL_FORCE_LOCAL可以设置为限制并行处理只针对当前实例 

基于索引的查询通常是不能并行的。但是如果涉及的索引是分区表的本地索引,使用该索引的查找可以被并行处理。 


并行搜集统计信息 
exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T1',CASCADE=>TRUE,ESTIMATE_PERCENT=>100,DEGREE=>4); 


使用并行HINT 
/*+ PARALLEL(table,)*/ 

/*+ NO_PARALLEL(table)*/ 

/*+ PARALLEL_INDEX(table,[index,[degree]])*/ 

/*+ NO_PARALLEL_INDEX(table[,index])*/ 

/*+ PQ_DISTRIBUTE(TABLE,OUT,in)*/ 

表的并行度 
ALTER TABLE TABLE_NAME PARALLEL [N]; 

修改session的并行度 
alter session force parallel query; 
alter session force parallel query parallel n; 
alter session force parallel dml; 
alter session force parallel dml parallel n; 


默认并行度=PARALLEL_THREADS_PER_CPU*CPU_COUNT 

RAC中的跨节点 
*.instance_groups='NBS','NBS1','NBS2','NBS3' 
NBS1.parallel.instance_groups='NBS1' 
NBS2.parallel.instance_groups='NBS2' 
NBS3.parallel.instance_groups='NBS' 
该作用为1.2禁止跨节点并行,3节点允许跨节点并行 


常用的查询方式:
select slave_name,status from v$pq_slave;


select t.event,t.program,t.seconds_in_wait,t.state from v$session t where username='OWRER' and status='ACTIVE';


select addr,status,user_ublk,used_urec,cr_get from v$transaction;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31419724/viewspace-2131828/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2016-12-13

  • 博文量
    7
  • 访问量
    6194