有个误区:Oracle的表分区会增加查询性能,因为只需要在部分数据里查了;会增加降低插入性能,因为多了一步指定分区的操作。实际情况并非如此,至少在OLTP系统中,分区不一定会增加查询性能,但很可能会增加插入性能。

  引用Tom大神的《Oracle编程艺术》的一段话,很好地解释了分区对OLTP系统的性能影响:

  在OLTP系统中,不应该把分区当作一种大幅改善查询性能的方法。实际上,在一个传统的OLTP系统中,你必须很小心地应用分区,提防着不要对运行时性能产生负面作用。在传统的OLTP系统中,大多数查询很可能几乎立即返回,而且大多数数据库获取可能都通过一个很小的索引区间扫描来完成。因此,以上所列分区性能方面可能 的主要优点在OLTP系统中表现不出来。分区消除只在大对象全面扫描时才有用,因为通过分区消除,你可以避免对对象的很大部分做全面扫描。不过,在一个OLTP环 境中,本来就不是对大对象全面扫描(如果真是如此,则说明肯定存在严重的设计缺陷)。即使对索引进行了分区,就算是真的能在速度上有所提高,通过扫描较小 索引所得到的性能提升也是微乎其微的。如果某些查询使用了一个索引,而且它们根本无法消除任何分区,你可能会发现,完成分区之后查询实际上运行得反而更慢 了,因为你现在要扫描5、10或20个更小的索引,而不是一个较大的索引。稍后讨论各种可用的分区索引时还会更详细地讨论这个内容。尽管如此,有分区的OLTP系统确实也有可能得到效率提示。例如,可以用分区来减少竞争,从而提高并发度。可以利用分区将一个表的修改分布到多个物理分区上。并不是只有一个表段和一个索引段,而是可以有10个表分区和20个索引分区。这就像有20个表而不是1个表,相应地,修改期间就能减少对这个共享资源的竞争。事实上在一个OLTP系统中,查询已经有以下特点:即索引访问相当快,因此,分区不会让索引访问的速度有太大的提高(甚至根本没有任何提高)。这并不是说要绝对避免在OLTP系统中使用分区;而只是说不要指望通过分区来提供大幅的性能提升。尽管有效情况下分区能够改善查询的性能,但是这些情况在大多数OLTP应用中并不成立。不过在OLTP系统中,你还是可以得到另外两个可能的好处:减轻管理负担以及有更高的可用性

  上面这段话在实际项目中得到了验证。项目中使用了Oracle RAC环境,在原先的AWR报表的Top Timed Event中,gc buffer busy高达70%,而DB CPU只有5%,buffer nowait只有93%,然后很快锁定到TOP等待对象均为索引对象。当时另一个有趣的现象,单机的响应时间只有RAC的40%。

  解决上面问题的方法有:

  • 去除不必要的索引
  • 全局索引分区,并把分区分散到多个表空间中,每个表空间又有多个数据文件
  • 自增长序列索引改为反向索引

  这么做以后,效果显著,Top Timed Event中,gc buffer busy已经看不到了,其他集群等待时间的总和也不超过总时间的10%,DB CPU已经超过了50%,提交SQL的执行时间提高了10倍,buffer nowait也提高到了99.99%。再通过autotrace观察查询性能,发现对于查询单值的情况,响应时间几乎没有变化,而且也不必在查询时指定分区。

转载于:https://www.cnblogs.com/todsong/archive/2012/10/10/2719098.html

OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能相关推荐

  1. android性能调优的工具,神兵利器-Android 性能调优工具 Hugo

    在进行Android性能调优.减少应用卡顿时,寻找可优化的code是一个必要的过程.如何发现应用中的耗时任务甚至是耗时函数呢,如果可以在log中打印每个方法的执行时间,甚至把执行方法时的输入输出同时打 ...

  2. mysql性能调优与架构设计 51cto_MySQL 数据库性能优化之表结构优化

    很多人都将 数据库设计范式 作为数据库表结构设计"圣经",认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求.殊不知,在N年前被奉 ...

  3. linux分区格式化慢,浅谈linux性能调优之三:分区格式化之前的考虑

    在Linux中进行格式化必须考虑Block与inode,Block还好理解,它是磁盘可以记录的最小单位,是由数个扇区组成,所以大小通常为n*512Bytes,例如4K. 那么inode是什么呢 ? B ...

  4. 性能调优之Java系统级性能监控及优化

    性能调优之Java系统级性能监控及优化 对于性能调优而言,通常我们需要经过以下三个步骤:1,性能监控:2,性能剖析:3,性能调优 性能调优:通过分析影响Application性能问题根源,进行优化Ap ...

  5. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

  6. 最佳5本Java性能调优书籍–精选,必读

    为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重 ...

  7. 应用性能调优分析与总结

    当出现用户抱怨网站太卡.软硬件需要升级.系统性能不佳等情况,程序员这时需要对系统进行性能调优,实现性能最大化,满足业务的最新需求. 1   为什么要性能调优? 应用上线前在性能上无法满足需求. 应用系 ...

  8. java性能保障技术_狙击P7!阿里大佬亲授“Java性能调优技术宝典”,太完整了!...

    一.前言 什么是性能调优? 性能调优其实很好理解,就是优化硬件.操作系统.应用之间的一个充分的协作,最大化的发挥出硬件的极致性能,来应对高负载的业务需求. 为什么需要性能优化? 其实说到底就是两个原因 ...

  9. 如何合理的规划一次jvm性能调优

    这是jvm优化系列第三篇: jvm优化--垃圾回收 jvm优化--监控工具 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响.但也有一些基础的理论和原则,理解这些理论 ...

最新文章

  1. RAC Failover三种方式
  2. php基础教程 第七步数组补充及循环基础
  3. linux系统中scp命令的用法
  4. 用指针比较三个数大小_《测量力的大小》教案
  5. 啥是符号式API,命令式API:TF 2.0两种搭建都支持,该怎么选?
  6. 微软Azure首席架构师John Gossman就微软加入Linux基金会一事答疑
  7. 锁 公平 非公平_推荐引擎也需要公平!
  8. ES6阮一峰读书笔记第二章变量的解构赋值
  9. 青铜时代 —— 相机算法
  10. 逍遥子张勇:CEO要更多思考“长远的事”和“不可为的事”
  11. 京东数据分析工具推荐(京东第三方数据平台)
  12. win7家庭版计算机添加用户,win7家庭版怎样设置来宾用户权限
  13. 【攻防世界-Web简单篇】
  14. AI独角兽泡沫破裂:高管离职、数据打架、上市中止、营收崩溃
  15. python异常处理机制例题_16.python异常处理
  16. android中oncreate方法,android开发之onCreate( )方法详解
  17. CSDN博客写作编辑器如何使用?
  18. HDU 3313 Key Vertex 胡搞(网络流最小割拆点什么的人家才不会呢)
  19. (详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别
  20. Python编程经常用到的英语及翻译

热门文章

  1. 《Adobe Photoshop CC经典教程(彩色版)》—第4课4.7节添加调整图层
  2. java常见面试题及答案 11-20(JVM篇)
  3. 滚动触发的翻转式文字引用效果
  4. jQuery技术内幕:深入解析jQuery架构设计与实现原理
  5. python pexpect 模块
  6. PyCharm 快捷操作
  7. Python调用PyAutoGUI模块
  8. 小程序与服务器封装,小程序-网络请求封装
  9. 树莓派3B 系统安装及初始化配置教程
  10. DevExpress Universal 20中文版