上QQ阅读APP看书,第一时间看更新
1.5.3 量变和质变
在这个世界,只有变化是永恒的。在强调变化引起性能异常的观点时,我们也必须认识到,并不是任何变化都会引起性能异常,量变引起质变是一个朴素的变化观点,也完全适用于性能优化,只有变化积累到一定程度之后才会引起性能异常。
回头看看图1-1会发现,响应时间只有在达到一定的压力突变点之后才会发生变异。
任何人和设备、任何资源都有其处理能力的上限,当然也包括数据库,某些设备或某些资源还有一些突变点,当达到或即将达到处理能力的上限(或突变点)时,就会发生性能异常。
列举两个例子来看看个体的变化会引起什么样的局部变化,如下:
❑ 表格的数据增加,会使得全表扫描的响应时间随之线性增加。
❑ 索引的数据持续增加,使得唯一索引分类的层数增加,进而提高访问成本。比如从2层索引树增加为3层索引树,那么唯一索引访问的成本将增加50%,响应时间将增加50%。
再来看看个体变化给全局带来的影响,以表格数据增加10%的全表扫描为例。
变化之前业务访问时间为1s,可以接受的访问时间为2s,完全在服务质量保证范围之内。变化之后的业务访问时间为1+1×10%=1.1s,仍然在服务质量保障范围之内。也就是从个体来说,完全没有问题,但是从全局来说,可能就会带来全局业务的性能急剧恶化。假设在变化之前有4个相同业务在部分时间会交叠执行,大致会消耗大约400Mb/s的I/O吞吐量带宽,基本使I/O子系统处于临界状态。当每个业务的访问时间从1s延迟到1.1s时,就有可能会导致5个甚至6个相同的业务在部分时段交叠执行,而这又会导致超过I/O子系统的服务能力,从而使其响应时间大幅度增加。这时,业务访问最终得到的也许并不是可以接受的1.1s,而是完全不可接受的5s甚至10s的响应时间。