ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 2013-06-10 ONE PASS AND MULTI PASS

2013-06-10 ONE PASS AND MULTI PASS

原创 Linux操作系统 作者:demonat 时间:2013-06-10 12:10:53 0 删除 编辑

http://blog.163.com/dazuiba_008/blog/static/36334981201162915350492/

ONE PASS AND MULTI PASS  

2011-08-01 14:59:27|  分类: oracle |字号 订阅

     谈到ONE PASS  AND MULTI PASS,那么不得不谈谈oracle sort,不知道大家是不是这么认为,给的内存多了,那么SORT是不是就性能就好了呢?答案肯定是否定的,那么我们先介绍下oracle 的SORT。

      其实在数据库环境中,很多时候都是伴随着排序的,比如创建索引,group by ,order by,union,分组函数等等。一般情况下,应该是排序在cache中性能是最好的,完了是ONE pass,最差的就是multi pass,但是这不是绝对的,如果你PGA_AGGREGATE_TARGET一味的加大,排序的性能可能直线下降,比MULTI pass的性能还差,在我们OLAP环境中,不要期望所有的排序都在CACHE中,ONE PASS是我们要调优的重点,因为MULTI PASS性能最差。

    这里了解一下排序的机制,排序是私有的,他的排序区是有大小限制的,一次排序超过这个限制了,不得不用到临时表空间。

监控排序相关的视图:V$SQL_WORKAREA、V$SQL_WORKAREA_ACTIVE、V$SORT_USAGE,这个大家下去自己查阅联机文档

从 9i开始,workarea_size_policy 是AMM(自动内存管理)AMM会有一个后台进程每3秒钟为检查负载情况,为每个进程合理的更新最小内存ONE-PASS点,所以要找这个点从9i开始就 交给oracle自己完成了,我们不需要再去配置sort_area_size等相关的参数。如果workarea_size_policy 是MANUAL的,那么可以研究一下sort_area_size 相关的参数。总的进程PGA大小是由PGA_AGGREGATE_TARGET决定的,其实排序的时候要维护一个二叉树,如果这个二叉树很大的话,那么很 消耗CPU资源。

     cache模式:当一个排序进程读取数据源,写到workarea_size_policy 的时候,incoming data和tree没有被填充满就结束了排序的情况,就是cache模式,这种是性能最好的情况。

     one-pass模式:当一个排序吧incoming data和tree填充满以后,如果再继续填充,那么会把工作区里面的数据进行分片,叫sort runs,这个排序运行片归档至临时表空间。那么如果排序很大,就会有很多的sort runs,归档到临时表空间的sort runs还的重新进行一次merge,这里有一个基于排序区的宽度(max intermediate merge width),也就是一次merge 的宽度,可以通过10032和10033查看这些内容,比如这里有50个sort runs,这个宽度是100,那么我们merge一次就可以完成,这里就叫做one-pass。

    multi-pass模式:如果merge一次,不够,需要多次merge。多次merge,肯定增加IO压力。所以这种是效率最差的。

 当做工作区是AMM的时候,如果不能cache,那么就要切换到minimum one-pass memeory.

这里只介绍几种模式,具体优化以后有时间再续。

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

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

注册时间:2011-04-15

  • 博文量
    46
  • 访问量
    92541