用Oracle并行查询发挥多CPU的威力_第1页
用Oracle并行查询发挥多CPU的威力_第2页
用Oracle并行查询发挥多CPU的威力_第3页
用Oracle并行查询发挥多CPU的威力_第4页
用Oracle并行查询发挥多CPU的威力_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用Oracle并行查询发挥多CPU的威力在一个单独的服务器中安装更多的CPU成为目前的一个趋势。使用对称多处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA都不足为奇。Oracle跟上了硬件发展的步伐,提供了很多面向多CPU的功能。从Oracle8i开始,Oracle在每个数据库函数中都实现了并行性,包括SQL访问(全表检索)、并行数据操作和并行恢复。对于Oracle专业版的挑战是为用户的数据库配置尽可能多的CPU。在Oracle环境中实现并行性最好的方法之一是使用Oracle并行查询(OPQ)。我将讨论OPQ是如何工作的和怎样用它来提升大的全表检索的响应时间以及调用并行事务回滚等等。使用OPQ当在Oracle中进行一次合法的、大型的全表检索时,OPQ能够极大地提高响应时间。通过OPQ,Oracle将表划分成如图A所示的逻辑块。由OPQ划分的表一旦表被划分成块,Oracle启用并行的子查询(有时称为杂务进程),每个子查询同时读取一个大型表中的一块。所有子查询完毕以后,Oracle将结果会传给并行查询调度器,它会重新安排数据,如果需要则进行排序,并且将结果传递给最终用户。OPQ具有无限的伸缩性,因此,以前需要花费几分钟的全表检索现在的响应时间却不到1秒。OPQ严重依赖于处理器的数量,通过并行运行之所以可以极大地提升全表检索的性能,其前提就是使用了N-1个并行进程(N=Oracle服务器上CPU的数量)。必须注意非常重要的一点,即Oracle9i能够自动检测外部环境,包括服务器上CPU的数量。在安装时,Oracle9i会检查服务器上CPU的数量,设置一个名为cpu_count的参数,并使用cpu_count作为默认的初始化输入参数。这些初始化参数会影响到Oracle对内部查询的处理。下面就是Orale在安装时根据cpu_count而设置的一些参数:fast_start_parallel_rollbackparallel_max_serverslog_bufferdb_block_lru_latches参数让我们进一步看看CPU的数量是如何影响这些参数的。参数fast_start_parallel_rollbackOracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态。这被称为并行热启动,而Oracle使用基于cpu_count的fast_start_parallel_rollback参数来决定未完成事务的秉性程度。并行数据操纵语言(DML)恢复能够在Oracle数据库崩溃后极大地加快其重新启动的速度。此参数的默认值是系统CPU数量的两倍,但是一些DBA们认为应该将这个值设置为cpu_count的四倍。参数parallel_max_servers_parameterOracle一个显著的加强是自动决定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_latchesLRU锁的数量是在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,则默认值或许显得太小。加强服务器Oracle数据库总是在提升性能,根据外部服务器环境检测cpu_count和基本参数设置的能力对于Oracle软件来说是一个重要的加强。随着更多的Oracle系统转移到SMP上来,当客户要采取增强措施并将众多的数据库转移到拥有32个或64个CPU的巨大服务器上来的时候,这些参数显得愈发重要。parallel_adaptive_multi_user booleanTRUE说明:启用或禁用一个自适应算法,旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度,在启动查询时实现此功能。当PARALLEL_AUTOMATIC_TUNING=TRUE时,其效果最佳。值范围:TRUE|FALSE默认值:如果PARALLEL_AUTOMATIC_TUNING=TRUE,则该值为TRUE;否则为FALSEparallel_automatic_tuning booleanTRUE说明:如果设置为TRUE,Oracle将为控制并行执行的参数确定默认值。除了设置该参数外,你还必须为系统中的表设置并行性。值范围:TRUE|FALSE默认值:FALSEparallel_execution_message_sizeinteger4096说明:指定并行执行(并行查询,PDML,并行恢复和复制)消息的大小。如果值大于2048或4096,就需要更大的共享池。如果PARALLEL_AUTOMATIC_TUNING=TRUE,将在大存储池之外指定消息缓冲区。值范围:2148-无穷大。默认值:如果PARALLEL_AUTOMATIC_TUNING为FALSE,通常值为2148;如果PARALLEL_AUTOMATIC_TUNING为TRUE,则值为4096(根据操作系统而定)。parallel_instance_group string说明:一个群集数据库参数,标识用来大量产生并行执行从属的并行例程组。并行操作只对在其INSTANCE_GROUPS参数中指定一个匹配组的例程大量产生并行执行从属。值范围:一个代表组名的字符串。默认值:由所有当前活动例程构成的组parallel_max_servers integer160说明:指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要,例程启动时分配的查询服务器的数量将增加到该数量。值范围:0-256默认值:由CPU_COUNT,PARALLEL_AUTOMATIC_TUNING和PARALLEL_ADAPTIVE_MULTI_USER确定parallel_min_percent integer0说明:指定并行执行要求的线程的最小百分比。设置该参数,可以确保并行执行在没有可用的恰当查询从属进程时,会显示一个错误消息,并且该查询会因此而不予执行。值范围:0-100默认值:0,表示不使用该参数。parallel_min_servers integer0说明:指定为并行执行启动例程后,Oracle创建的查询服务器进程的最小数量。值范围:0-PARALLEL_MAX_SERVERS。默认值:0parallel_server booleanTRUE说明:将PARALLEL_SERVER设置为TRUE,可以启用群集数据库选项。值范围:TRUE|FALSE默认值:FALSEparallel_server_instances integer2说明:当前已配置的例程的数量。它用于确定SGA结构的大小,该结构由已配置的例程数量来确定。正确设置该参数将改善SGA的内存使用情况。有几个参数是用该数量计算得到的。值范围:任何非零值。默认值:1parallel_threads_per_cpu integer2说明:说明一个CPU在并行执行过程中可处理的进程或线程的数量,并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象,应减小该数值。值范围:任何非零值。默认值:根据操作系统而定(通常为2)举例:ParallelExecutionforaSessi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论