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

1.1.2 如何改善宝马汽车的运行速度

想象这样一幅画面:一辆性能优异的宝马汽车,以时速100km轻松地行驶在路上,一路风光无限好。可不知从什么时候起,它的速度渐渐慢了下来,从时速100km减到95km,再减到80km、60km、40km,似乎还有继续减慢的趋势。如果这时请你猜猜是什么原因导致的,你会如何判断?可能很多人的第一想法是车坏了,但如果我告诉你车看起来依然光鲜,自动化检查也提示汽车没有任何问题呢?你又会想到什么?马路变窄?如果我说走的是一条8车道的马路呢?是不是有点傻眼了?

假设就在我们分析问题的这个时段,车速突然又加快了,时速逐渐恢复到100km,而且持续观察一段时间,比如30分钟,发现它已经稳定在了100km,似乎一切都正常了,让人不禁欢喜。但是,如果你是一位DBA,相信在这个时候,不会就此放过前面的问题,职业习惯会让你心存疑虑:为什么宝马汽车会有一段时间速度不正常,到底是什么导致的,下次会不会再次出现?

宝马汽车在马路上的运行状况是最为典型的业务性能优化场景,作为一个性能优化者,必须要明晰是什么原因导致这种情况的,并且应了解该如何进行改善。

每个人都习惯从自己的专业知识角度去分析问题,有句话说得好,我手中只有一个锤子,那我看哪里都是钉子,总要让我的锤子发挥作用吧。事实上,如果我们的视野从宝马汽车上移开,也许问题就会豁然开朗。宝马汽车性能优异,保养良好,可这并不是跑得快的唯一前提,一辆汽车的行驶速度是由很多因素决定的:汽车性能及状况、司机的技能和状态甚至心情、当时的路况、天气等,这些要素共同决定了汽车会以什么样的速度运行。

作为一个性能优化工作者,可能也会面对类似上面的问题:业务系统突然跑得慢了,可是我的系统没有问题啊,数据库也没有任何问题呀,到底是怎么回事呢?数据库就好比是宝马汽车行驶时的马路,不过,这条马路并不是宝马汽车的专用通道,还会有其他车辆(如拖拉机)在行驶。我们不能说马路有8车道宝马汽车就一定跑得快,因为跑在马路上的其他汽车以及天气的变化,甚至行人都有可能左右宝马汽车的速度,比如,汽车变道甚至发生碰撞,天色变暗、打雷下雨以及暴雨或大雾,行人过马路等都会对车速有影响。我们也不能说速度变慢了就增加车道(如从4车道变成8车道),经验告诉我们,再宽的马路也会堵车,再好的汽车也会抛锚。性能优化工作者从某种程度上来说就相当于交警,他要根据马路上的繁忙程度进行调度,该快的快,该慢的慢,该拖车的拖车,该变道的变道,需要从8通道变成12通道的时候也要勇敢提出来。同时,他也要知道不能把台风天的汽车行驶速度和艳阳天进行比较,即使是同一辆汽车或同一个司机或同一条马路或同样的拥塞。