用Oracle并行查询发挥多CPU的威力(转)

用Oracle并行查询发挥多CPU的威力(转)[@more@]

  在一个单独的服务器中安装更多的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所示的逻辑块。

  图 A

1154879831_ddvip_4400.gif

  由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_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,则默认值或许显得太小。

  加强服务器

  Oracle数据库总是在提升性能,根据外部服务器环境检测cpu_count和基本参数设置的能力对于Oracle软件来说是一个重要的加强。

  随着更多的Oracle系统转移到SMP上来,当客户要采取增强措施并将众多的数据库转移到拥有32个或64个CPU的巨大服务器上来的时候,这些参数显得愈发重要。


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

转载于:http://blog.itpub.net/10748419/viewspace-954218/

UE4 Instanced Mesh 半透明渲染顺序不对解决 以绿色方块为Instanced Mesh为例。 正确的半透应该是这样的: 这是一般蓝图Actor方块,其半透是正常的。 然而Instanced Mesh因为过,UE4不给你缓存正确的渲染顺序。所以,在不改代码的情况下,想解决Instanced Mesh半透问题,是不可能的。不正确的半透如下: 注意到错误发生在Instanced Mesh的方块与方块之间。 但我就是要解决,... 阅读详情

相关推荐

基于 Qt C++ 的 船舶导航系统 UI

你想实现一个基于 **Qt C++** 的 **船舶导航系统 UI**,核心功能包括 **Qt Quick** 电子海图显示和 **NMEA 0183** 协议解析。"断开" : "连接"创建一个 Qt Quick 项目,选择 **Qt 6** 版本,确保勾选 **Qt Quick**、**Qt Network** 和 **Qt SQL** 模块。Label { text: "纬度:" }3. **连接设备**:点击 "连接" 按钮连接到 GPS 设备或模拟数据源。title: "连接设置"

寒寒豆豆软件公司的博客 104

oraclecpu,担心CPU 没利用起来?这篇Oracle 并行计算来帮你~

原标题:担心CPU 没利用起来?这篇Oracle 并行计算来帮你~作者:wzq609

weixin_29216049的博客 840

手把手教你学PCIE(10.5)--PCIE故障排除方法的分步排查法介绍

通过以上分步排查法,你可以系统地诊断和解决 PCIe 设备的故障。每个步骤都有助于逐步缩小问题范围,最终找到并解决问题。

MHD0815的博客 1823

Oracle使用并行提高存过效率

问题场景 因为电信业务面向全国,经常要在oracle中定时处理全国30个省份的数据,量级虽然不算太大只有几百万的基站或小区相关位置数据,但由于涉及到大量的空间拓扑分析,单条数据处理都在秒级,如果一次性处理的话,不仅速度难以忍受,而且可能会因为存过运行时间过长而运行失败。 优化思路 由于数据模型已经约定,不可擅改,故只能通过以下思路进行优化: 1. 索引优化 分析存过每条语句,尽可能使用索引,对于...

愤怒的小兵 2150

Oracle并行查询发挥CPU威力

Oracle并行查询发挥CPU威力2006-07-05 07:00 作者: 出处: BLOG 责任编辑:方舟   在一个单独的服务器中安装更CPU成为目前的一个趋势。使用对称处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA都不足为奇。   Oracle跟上了硬件发展的步伐,提供了很面向C

陈建慧程序人生 2132

Oracle排序耗时间,oracle中按CPU资源消耗排序SQL

setlines180setpagesize500colINSTANCE_NUMBERfor99colmoduleformata10colexecsfor999,999,999coletimefor999,999,999.9colavg_etimefor999,999.999colavg_cpu_timefor999,999.999colavg_lio...

weixin_33642697的博客 478

oracleCPU总结.

1. ORACLE中的非空闲等待事件是占用CPU的. 2. CPU包括运算器、控制器和总线三个部件。CPU是指一个CPU中包含个核心-运算器, 而CPU是指CPU, CPUCPU都支持线程,在核或CPU的机器中,只有按线程编程的应用软件才能提高性能,如:ORACLE软件,两个session可以分别使用两个CPU,相互之间不受影响. 例1:单核CPU中,开启ORACL

甲骨虫的家 4501

oraclecpu查询,用Oracle并行查询发挥CPU威力()

Oracle并行查询发挥CPU威力()[@more@]在一个单独的服务器中安装更CPU成为目前的一个趋势。使用对称处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA都不足为奇。Oracle跟上了硬件发展的步伐,提供了很面向CPU的功能。从Oracle8i开始,Oracle在每个数据库函数中都实现了并行性,包括SQL访问(全...

weixin_33485981的博客 337

oraclecpu查询,用Oracle并行查询发挥CPU威力

正在看的ORACLE教程是:用Oracle并行查询发挥CPU威力。参数让我们进一步看看CPU的数量是如何影响这些参数的。参数fast_start_parallel_rollbackOracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态。这被称为并行热启动,而Oracle使用基于cpu_co...

weixin_42511886的博客 307

oraclecpu查询,oracle并行查询发挥cpu威力.doc

oracle并行查询发挥cpu威力.doc还剩1页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧,价低环保!内容要点:让我们进一步看看 CPU 的数量是如何影响这些参数的。参数 fast_start_parallel_rollbackOracle 并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当 Oracle 数据库发生少有的崩溃时,Oracle 能自动检测未完...

weixin_42116847的博客 154

oracle并行会快少,用Oracle并行查询发挥CPU威力

正在看的ORACLE教程是:用Oracle并行查询发挥cpu威力。参数   让我们进一步看看cpu的数量是如何影响这些参数的。   参数fast_start_parallel_rollback   Oracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态。这被称为并行热启动,而Oracle使...

weixin_32306957的博客 345

oracle如何利用cpu,用Oracle并行查询发挥CPU威力

在一个单独的服务器中安装更cpu成为目前的一个趋势。使用对称处理服务器(smp)的情况下,一个oracle服务器拥有8个、16个或32个cpu以及几吉比特ram的sga都不足为奇。oracle跟上了硬件发展的步伐,提供了很面向cpu的功能。从oracle8i开始,oracle在每个数据库函数中都实现了并行性,包括sql访问(全表检索)并行数据操作和并行恢复。对于oracle专业版的挑战...

weixin_39602280的博客 787

Oracle中的并行

Oracle中的并行 (一)Oracle中的并行 ...

测试0901-1 359

C#生成等高线源程序.rar_C# 等高线_c#等高线_三维_地形图_等高线 c#

根据若干个三维坐标点自动生成等高线的C#源程序代码。

计算机组成原理PPT(含演示动画).rar

计算机组成原理的ppt,包含演示动画

上一篇: 简单SQL语句小结(转)
下一篇: 多条件数据库查询的优化方法(转)
cuiji1279
博客等级 码龄10年 13粉丝 563原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值