Parallel并行技术 并行数据库技术

对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallelexecuteionserver),这些并发进程由一个称为并发协调进程的进程来管理。

启用Parallel前的忠告:只有在需要处理一个很大的任务,如需要几十分钟,几个小时的作业中,并且要有足够的系统资源的情况下(这些资源包括cpu,内存,io),您才应该考虑使用parallel。否则,在一个多并发用户下,系统本身资源负担已经很大的情况下,启用parallel,将会导致某一个会话试图占用了所有的资源,其他会话不得不去等待,从而导致系统系能反而下降的情况,一般情况下,oltp系统不要使用parallel,oltp系统中可以考虑去使用。

Oracle 默认并行度计算方式:

(1)Oracle 根据CPU的个数,RAC实例的个数以及参数parallel_threads_per_cpu的值,计算出一个并行度。

(2)对于并行访问分区操作,取需要访问的分区数为并行度。

Parallel分类

l并行查询parallelquery

l并行dmlparallel dml pdml

l并行ddlparallel ddl pddl

一、并行查询

并行查询允许将一个sqlselect语句划分为多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果,多用于全表扫描,索引全扫描等,大表的扫描和连接、创建大的索引、分区索引扫描、大批量插入更新和删除

1.启用并行查询

SQL> ALTER TABLE T1PARALLEL;

告知oracle,对T1启用parallel查询,但并行度要参照系统的资源负载状况来确定。

利用hints提示,启用并行,同时也可以告知明确的并行度,否则oracle自行决定启用的并行度,这些提示只对该sql语句有效。

SQL> select count(*) fromt1;

SQL> select degree fromuser_tableswheretable_name='T1';

DEGREE

--------------------

DEFAULT

并行度为Default,其值由下面2个参数决定

SQL> show parameter cpu

NAMETYPEVALUE

------------------------------------ -----------------------------------------

cpu_countinteger2

parallel_threads_per_cpuinteger2

cpu_count表示cpu数

parallel_threads_per_cpu表示每个cpu允许的并行进程数

default情况下,并行数为cpu_count*parallel_threads_per_cpu

2.取消并行设置

SQL> alter table t1noparallel;

SQL> select degree from user_tableswhere table_name='T1';

DEGREE

----------------------------------------

1

3.数据字典视图

v$px_session

sid:各个并行会话的sid

qcsid:querycoordinator sid,查询协调器sid

二、并行dml

并行dml包括insert,update,delete,merge,在pdml期间,oracle可以使用多个并行执行服务器来执行insert,update,delete,merge,多个会话同时执行,同时每个会话(并发进程)都有自己的undo段,都是独立的一个事务,这些事务要么由pdml协调器进程提交,要么都rollback。

在一个有充足I/o带宽的多cpu主机中,对于大规模的dml,速度可能会有很大的提升,尤其是在大型的数据仓库环境中。

并行dml需要显示的启用

SQL> alter session enable paralleldml;

Disable并行dml

SQL> alter session disable paralleldml;

三、并行ddl

并行ddl提供了dba使用全部机器资源的能力,常用的pddl有

create table asselect……

create index

alter index rebuild

alter table move

alter table split

在这些sql语句后面加上parallel子句

SQL> alter table t1 moveparallel;

Table altered

SQL> create i ndex T1_IDX on T1(OWNER, OBJECT_TYPE)

2tablespaceSYSTEM

3parallel;

4;

*************************************************************************************************parallel 的使用select * from v$px_session 查看某个session的并行度
  这个可以加到insert、delete、update、select的后面来使用

Parallel并行技术 并行数据库技术
*************************************************************************************************

下面就是Orale在安装时根据cpu_count而设置的一些参数:

fast_start_parallel_rollback
parallel_max_servers
log_buffer
db_block_lru_latches

参数

让我们进一步看看CPU的数量是怎么影响这些参数的。

参数fast_start_parallel_rollback

Oracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态。这被称为并行热启动,而Oracle使用基于cpu_count的fast_start_parallel_rollback参数来决定未完成事务的秉性程度。

并行数据操纵语言(DML)恢复能够在Oracle数据库崩溃后极大地加快其重新启动的速度。此参数的默认值是系统CPU数量的两倍,不过一些DBA们认为应该将这个值设置为cpu_count的四倍。

参数parallel_max_servers_parameter

Oracle一个显著的加强是自动决定OPQ并行的程度。由于Oracle清晰服务器中CPU的数量,他会自动分配合适的子进程的数量来提升并行查询的响应时间。当然,会有其他的外部因素,比如表的划分及磁盘输入/输出子系统的布局等,不过根据cpu_count来设置parallel_max_servers参数将给Oracle一个合理的依据来选择并行的程度。

由于Oracle的并行操作严重依赖服务器上CPU的数量,parallel_max_servers会被设置成服务器上CPU的数量。如果在一台服务器上运行多个实例,则默认值太大了,会导致过度的页面交换和严重的CPU负担。并行的程度还依赖于目标表中分区的数量,因此parallel_max_servers应该设置成足够大以允许Oracle为每个查询选择最佳数量的并行子查询。

参数log_buffer

参数log_buffer定义了供即刻写入redo日志信息的保留RAM的数量,这个参数受cpu_count的影响。Oracle推荐log_buffer最大为cpu_count乘以500KB或128KB。CPU的数量对于log_buffer来说非常重要,因为Oracle会生成多日志写入(LGWR)进程来异步释放redo信息。

log_buffer是Oracle中最易误解的的RAM参数之一,通常存在下面几个设置错误:

log_buffer被设置得太高(例如,大于1MB),这回引起性能问题,因为大容量的结果会使得写入同步进行(例如,日志同步等待事件非常高)。log_buffer不是db_block_size的倍数。在的Oracle9i中,log_buffer应该是2048字节的倍数。

参数db_block_lru_latches

LRU锁的数量是在Oracle数据库内部用来管理数据库缓冲的,这严重依赖于服务器上CPU的数量。

非常多聪明的Oracle9i的DBA使用多冲数据缓冲(例如db_32k_cache_size),他们推荐将这个未公开声明的参数重设置为默认的最大值。db_block_lru_latches参数在Oracle8i中使用得非常多,不过在Oracle9i中变成了一个未公开声明的参数,因为Oracle目前根据数据库拥有的CPU数量设置了一个合理的默认值。

db_block_lru_latches默认被设置为服务器上cpu_count的一半(例如服务器上只有一个Oracle数据库)。Oracle推荐db_block_lru_latches千万不要超过cpu_count的两倍或三倍,或db_block_buffers的五十分之一。

如果使用多缓冲池则这种计算方法有一个问题,因为不能控制分配给每个数据缓冲池的锁的数量。如果db_writers参数大于1,则默认值或许显得太小。



http://blog.csdn.net/tianlesoftware/article/details/5854583并行度比较详细的介绍




  

爱华网本文地址 » http://www.413yy.cn/a/25101015/250057.html

更多阅读

Parallel并行技术 并行数据库技术

对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallelexecuteionser

边缘技术岗 从技术的边缘回家

     这个世界,有人不分昼夜低头看小小的手机屏幕上明星和亲友的悲欢离合,也有人孤悬在深邃天际俯看地球与众星球的幽光明灭。两者都是人类正常的选择,就像3D电影技术发明了,有的导演用它来拍摄斗室里的肉蒲团,有的导演用它来拍摄浩

教育变革的技术力量 移动技术的力量

     受益于移动计算技术,我们日常生活所依赖的用品逐步变成软件。杂志和报纸,甚至书籍,正在变成软件。随着手机支付技术的实现,钱包里所有的东西也即将变成软件,从身份证到现金等。音乐在近10年来已经变成软件,正如史蒂夫·乔布斯和

新技术商业化 新技术浪潮下的商业「炼金术」

     在新技术浪潮下,“伦敦眼灯光秀”只是人们现在身处的大数据时代的一个小魔术而已。  2012年伦敦奥运会让全世界观众都因为激烈的比赛而心潮起伏,如何知道大家对于奥运是什么样的心情?很简单,只要你去看一眼世界上最大的摩天

声明:《Parallel并行技术 并行数据库技术》为网友劳资纯爷们儿分享!如侵犯到您的合法权益请联系我们删除