oracle如何利用多cpu,用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所示的逻辑块。

图 a

21ef936cc521af65de8fab58917eb6e0.png

由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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值