2.5 基于资源瓶颈分析的优化方法论
2.5.1 基于资源瓶颈分析优化方法论简述
Oracle要做优化,大部分人首先会想到瓶颈在哪里?资源瓶颈分析是如此之普及,以至于无论懂还是不懂的人都知道“瓶颈”这个术语,都知道性能优化首先要找到这个瓶颈,然后消除这个瓶颈。数据库系统的资源主要包括:CPU、内存和虚拟内存、I/O子系统、网络子系统。
绝大部分开发人员在写程序的时候都假设资源是无限的,CPU是无限快,内存是无限多,磁盘无限大并且像内存一样快,网络带宽无限并且像光速一样运行。事实上,大家都知道,Oracle数据库总是在资源有限的环境下运行,我们总是在资源有限的环境下生存和发展。瓶颈分析就是建立在资源有限的运行环境下,通过发现瓶颈和消除瓶颈的过程来改善数据库或者业务系统性能。
只要数据库系统的资源足够,业务系统一定会良好运行,这是资源瓶颈分析优化理论的信条。每个有一定经验的DBA都知道,真正考验Oracle数据库吞吐量的是其并发处理能力,而不是资源供给能力,充分的资源并不能完全保障业务系统的快速运行。Oracle从本质上是一个巨大的串行同步系统,需要大量的lock、latch和mutex的支持才可以实现互不干扰的访问,充分的资源有助于Oracle快速通过串行通道,但无法保证在串行通道发生的冲突。
基于资源瓶颈分析的优化方法论具有以下局限性。
❑ 充分的资源并不能保证业务系统具备高性能。
❑ 资源之间的瓶颈会相互转化,CPU瓶颈的消失会导致输入、输出瓶颈,内存瓶颈的消失会导致CPU瓶颈。
❑ 资源利用率过高是性能不佳的滞后性指标表现,它只是其他藏在后面的真实原因的最后表现。
我们可以用下面几个简单的描述性场景来描述资源瓶颈分析优化方法论的局限性。
简单场景描述一:一个大量行锁冲突的系统,可以发现冲突严重时CPU和I/O会极度空闲,而这时业务会几乎挂起。
简单场景描述二:一个高吞吐量事务提交的系统,可以发现整体I/O资源空闲,某块磁盘I/O特别紧张,你会发现无法利用大量空闲的I/O资源。
简单场景描述三:一个资源极为空闲的系统,系统吞吐量不佳,而且无法增加资源利用率以提高系统吞吐量。
简单场景描述四:一个资源空闲的系统,响应时间总是无法满足。