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

1.6 基线管理

1.6.1 基准点和基线

人们在谈论Oracle业务系统的性能时通常会说它运行得快或慢,但大家都知道快和慢没有一个绝对的标准,所有的快或慢都是基于比较而言的。比如我们在操场上15s跑完100m,没有人会觉得你跑得快,因为大家都有一个比较的基准,大部分人都可以在12~15s跑完。同样是100m,如果你是上楼梯,那大家可能会觉得你的速度太惊人了。所以,快慢好坏都是基于比较而言的,没有比较就没有性能的好和坏。因此,为了使性能优化工作更加科学,需要建立量化的性能基准点,而不能依赖于经验来建立,毕竟经验很难放之四海而皆准,每次衡量快或者慢的时候都可以与这个基准点进行比较,这个基准点即为基线。在Oracle数据库中,同样需要建立基准点或者基线,用来描述Oracle业务系统在某个特定的状态下,特定的输入响应和输出响应以及相应提供服务的各个资源和组件状况。当后续的业务运营和基线产生预料之外的偏离时,则表示业务系统发生了变化,不管是否会产生业务系统性能问题,都需要运维人员介入。

业务运行的状态可能在不同的时间点表现出完全不同的业务特征,在不同的业务特征之间进行比较是没有任何意义的。这时应该建立多个基准点来完整地描述业务系统的运行特征。比如电信计费系统在白天和晚上、月底和月初都会表现出不同的特征,因此就需要对不同时间点都建立相应的基准点或基线。

下面通过一个简单的例子来说明基线之于性能优化的重要性。

某业务系统的性能最近变得很差,需要进行性能优化。性能优化专家发现一个明显的现象——CPU利用率达到100%,几乎没有空闲时间。依据经验,该专家认为这个100%的CPU利用率是属于一个坏指标,并且认为这是其根本原因。通过艰苦的优化工作,CPU利用率有所下降,但是性能并没有提高,可以想象,应该是专家找错了方向。事实上,这个系统自上线以来其CPU一直工作在100%状态下,且运行良好。在这种情况下,如果有了CPU的利用率基线,专家就不会犯这个错误,可以正确地把握方向。而且,如果进一步测量指标可以发现,虽然CPU利用率为100%,但是其服务能力没有任何问题,并且没有在CPU上形成大规模冲突导致其单次服务能力下降。

基线的存在可以大大减轻性能优化者的负担,基线的存在可以使性能优化不再是高手的专利,普通的性能优化工作者甚至是缺乏任何数据库知识的人都可以轻松地发现导致业务系统性能变差的原因:只要把每个可测量的指标值和该指标的基线值进行比较,出现大规模偏差的一般就是性能问题的根源所在。