ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle性能优化方法论的发展之四:基于资源瓶颈分析的优化方法论

Oracle性能优化方法论的发展之四:基于资源瓶颈分析的优化方法论

原创 Linux操作系统 作者:sunsapollos 时间:2013-10-25 21:29:26 0 删除 编辑
       Oracle要做优化,大部分人首先就会想到瓶颈在哪里?瓶颈分析是如此之普及以至于无论懂还是不懂的人都知道瓶颈这个术语,都知道性能优化首先要找到这个瓶颈,然后消除这个瓶颈。数据库系统的主要资源:CPU,内存和虚拟内存,IO子系统,网络子系统。
      绝大部分开发人员在写程序的时候都假设资源是无限的,CPU是无限快,内存是无限多,磁盘无限大并且像内存一样快,网络带宽无限并且像光速一样运行。而事实上,大家都知道,Oracle数据库总是在资源有限的环境下运行,我们总是在资源有限的环境下生存和发展。瓶颈分析就是建立在资源有限的运行环境的前提下,通过发现瓶颈和消除瓶颈的过程来改善数据库或者业务系统性能。
      只要数据库系统的资源足够,业务系统一定会良好运行,这是资源瓶颈分析优化理论的信条。每个有一定经验的DBA都知道,真正考验Oracle数据库吞吐量是其并发处理能力,而不是资源供给能力,充分的资源并不能完全保障业务系统快速运行。Oracle从本质上是一个巨大的串行同步系统,需要大量的Lock,Latch和mutex的支持才可以实现互不干扰的访问,充分的资源有助于Oracle快速通过串行通道,但无法保证在串行通道的冲突。
      简单场景描述一:一个大量行锁冲突的系统,可以发现冲突严重的时候CPU和IO会极度空闲,而这个时候业务会几乎挂起。
     简单场景描述二: 一个吞吐量事务提交的系统,可以发现整体IO资源空闲,某块磁盘IO特别紧张,你会发现无法利用大量空闲的IO资源。
    简单场景描述三:  一个资源极为空闲的系统,系统吞吐量不佳,而且发现就是无法增加资源利用率以提高系统吞吐量。
    简单场景描述四:一个资源空闲的系统,响应时间总是无法满足。
      基于资源瓶颈分析的优化方法论具有以下局限性:
     (1)、充分的资源并不能保障业务系统具备高性能。
     (2)、资源之间的瓶颈会相互转化,CPU瓶颈的消失会导致IO瓶颈,内存瓶颈消失的消失会导致CPU瓶颈。
     (3)、资源利用率过高是性能不佳的滞后性指标表现,他只是其他藏在后面的真实原因的最后表现。
    
        基于资源瓶颈分析的优化方法论极其古老而且极其流行,古老和流行往往意味着其具有一定的效果。我更愿意把资源瓶颈分析的优化方法论和基于局部命中率的优化方法论放在一起在论述:资源空闲的系统未必能保证高效的性能,但资源紧张甚至不足系统的必然性能不佳。从这个角度考虑,由于瓶颈分析优化操作简单,容易发现问题,可以和局部命中率方法一样作为必要的辅助性优化方法论。
        资源瓶颈的分析虽然容易,但极其容易被误导,只有正确的认识资源的特性才可以正确的发现资源瓶颈。在资源瓶颈的分析过程中,我们需要把握以下几点:
      (1)、每种资源都具有其处理能力的上限,达到其处理能力上限必然会导致其服务能力的下降,但接近其资源能力的上线未必会导致性能下降。
     (2)、资源利用率仅仅是衡量资源瓶颈的一个指标,而且不是最重要的指标。100%的CPU利用率,100%的磁盘利用率并不意味着效率下降,有时候反而是业务高效运行的一定特征,比如ETL处理程序总是希望CPU被100%利用。
     (3)、资源瓶颈可以相互交换,在一个IO性能低下的系统,内存资源充足的系统,可以通过高内存,高CPU消耗来进行交换。一个网络带宽有限系统可以通过压缩传输提高CPU利用率来进行交换。
     (4)、资源使用过度是业务系统性能不佳的最后传导因素,是其他相关因子导致资源过度应用,资源过度应用导致资源提供性能不佳。瓶颈分析需要明确主要的资源影响因子,也就是会导致资源应用的相关操作。
     
       我们来看4大资源的处理能力: CPU >= 内存 >>磁盘~~网络。磁盘还可以通过缓存,并行读取来获得很高的带宽,而网络即使是万兆网卡才打达到理论1000M的吞吐量,而且一般服务器的网卡接口有限,网络几乎总是无法提供和其他三大资源匹配的吞吐量。从这个匹配关系出发,几乎要求所有的业务系统都需要被设计成仅仅需要获取一小部分数据返回到客户端,也可以看出具有大量数据返回的业务系统网络总会成为瓶颈所在。
     磁盘和网络由于其天生具有带宽不足的特性,在大部分业务系统中,磁盘和网络都会成为所谓的资源瓶颈所在。在瓶颈发现和改善的过程,基本具有两种不同的手段来完成存储系统和网络系统的改善:
     (1)、以内存和CPU资源来换取磁盘和网络资源是一种常用的手段,比如大规模的缓存,传输数据的压缩等等。
     (2)、减少存储系统、网络系统和服务器之间的数据交互,采用分布式计算,智能化的存储系统和网络系统仅仅返回绝对必须的数据,从而减少数据交互。比如Oracle Exadata一体机的主要目标就是减少存储和服务器之间数据交互,通过减少数据交互来大规模改善性能。
      资源的具体特征分析、检测和改善,具体参见资源供给:CPU,内存,IO子系统和网络子系统章节。
     
     

      
      

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

请登录后发表评论 登录
全部评论
专注于Oracle,BI,Security,DR &^BCP,Performance tuning

注册时间:2013-10-15

  • 博文量
    68
  • 访问量
    726209