Oracle数据库性能优化方法论和最佳实践
上QQ阅读APP看书,第一时间看更新

2.5.3 有效运行资源瓶颈分析优化方法

基于资源瓶颈分析的优化方法论极其古老而且流行,古老和流行意味着其有一定的效果。笔者更愿意把基于资源瓶颈分析的优化方法论和基于局部命中率的优化方法论放在一起论述:资源空闲的系统未必能保证高效的性能,但资源紧张甚至不足的系统必然导致性能不佳。从这个角度考虑,由于瓶颈分析优化方法操作简单,容易发现问题,可以与局部命中率方法一样作为必要的辅助性优化方法论。资源瓶颈的分析虽然容易,但极其容易被误导,只有正确地认识资源的特性才可以发现资源瓶颈。在资源瓶颈的分析过程中,我们要把握以下几点。

❑ 每种资源都有其处理能力的上限,达到其处理能力上限后必然会导致其服务能力的下降,但接近其资源能力的上线未必会导致性能下降。只有达到资源瓶颈的上限后,才会成为所谓的瓶颈。

❑ 资源利用率只是衡量资源瓶颈的一个指标,但不是最重要的指标。100%的CPU利用率、100%的磁盘利用率并不意味着效率下降,有时候反而是业务高效运行的一定特征,比如ETL处理程序总是希望CPU被100%利用。

❑ 资源瓶颈可以相互交换,在一个I/O性能低下、内存资源充足的系统中,可以通过高内存和高CPU消耗来进行交换。一个网络带宽有限的系统可以通过压缩传输提高CPU利用率来进行交换。

❑ 资源使用过度是业务系统性能不佳的最后传导因素,是其他相关因子导致资源过度应用,而资源过度应用导致资源提供性能不佳。瓶颈分析需要明确主要的资源影响因子,也就是会导致资源应用的相关操作。

❑ 资源供给作为设备的基本属性,同样遵循吞吐量和响应时间关系曲线,具体参见图2-4。为了有效利用资源瓶颈分析,必须掌握每种资源的性能突变点,也许有些资源会存在多个不同的突变点。

❑ 资源的供给是均匀的,但是资源的使用往往不均匀。比如总是出现某几个CPU很忙,其他CPU基本空闲;某块磁盘特别忙碌,其他磁盘基本没有工作。在资源瓶颈优化中,资源均衡分布使用是常用的资源瓶颈优化方式。

在本书中,为了更好地发挥资源瓶颈分析的作用,把lock、buffer lock、latch和mutex等并发性控制机制纳入了资源的范畴,使性能必然与某个资源供给不佳具有一定的关系,使简单的资源瓶颈分析在Oracle业务性能优化中发挥更好的作用。