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

1.1.1 从一个真实病例说起

下面是本人的真实经历,也许很能够说明一些问题:

不知道从什么时候起,我开始头疼,主要是半边头疼,有时候会伴随眼睛疼和牙齿疼,疼痛顺序一般为头疼→眼睛疼→牙齿疼。当持续头疼根本不能够工作的时候,我去看医生了。先到神经内科做了脑部CT检查之后,医生说没有多大问题,估计是压力大、劳累导致供氧不足,属于亚健康状态,要多锻炼。脑部没问题当然很开心,不过疼痛的问题依然没有解决,最终导致无法工作。既然可能是最近太累的缘故,那么选择给自己放假,到三亚去度假。到三亚的第二天,头疼就消失了,我很开心地认为确实是前段时间太累了。在三亚呆的这段时间,一直没有头疼过。

可回来上班后不久,我头疼的毛病又开始发作,只能继续上医院。这次去了脑外科,医生检查之后也没看出什么毛病,开了一些老年人服用的舒缓血管的药,看看是否有效。药吃完了,头疼依旧。老婆给我买了一些虫草,以加强供氧和营养。吃了1个月的虫草后,居然头疼病好多了。我再次到脑外科看医生,医生不认可吃虫草对头疼有好处。我问医生,是否有可能是牙齿疼痛引起的,医生同样不认可。

由于我有鼻窦炎的老毛病,所以就去耳鼻喉科看医生。耳鼻喉科的医生看了之后,初步判断是鼻窦炎引起的头疼,说需要连续吃3个月左右的药。在头疼难当的情况下,我坚持吃了3个月治疗鼻窦炎的药,可惜头疼依旧,而鼻窦炎已经极其轻微了,我再次提出牙齿的问题,医生同样不认可。耳鼻喉科不行,我开始找眼科医生看。经过眼科医生全面的检查之后,认为眼睛有些炎症,但应该不会与头疼产生关联。无论如何,我还是坚持点眼药水,吃药。

后来公司体检,由于牙齿会疼,所以顺便看了牙科医生。我再次提起牙齿庝是否会引起头疼的问题,医生表示应该关系不大,不过表示可以把牙神经腐烂掉以看看是否存在关联。非常神奇的是,医生在把牙神经腐烂之后,我的头疼立即消失了,基本确认了牙齿疼和头疼之间的关系。

毕竟是关系到脑部的大事,还是不放心。我有一个脑外科的同学回国之后,我马上去找他,再次确认了脑部没有问题,也确认了牙齿疼是有可能会引起头疼的,而且同样的神经也会导致眼睛疼。

人体是一个高度协作的有机生命体,任何一个环节出现问题,就可能会导致不舒服。Oracle数据库虽然没有人体复杂,但也是一个高度协作的同步系统,任何一个环节出现问题,都有可能导致最终的业务系统性能变慢。为什么性能的优化就像某些疾病的诊断一样,处理起来如此困难,原因主要有以下两点:

❑ 无论是医生还是DBA,都习惯于以部件分解的方式来看待问题。医生把人体分解成为一个个独立的器官;DBA把Oracle数据库分解成了实例、SGA、数据库以及更细的部分。

❑ 医生要对人体工作流程机制有全局性的认识,还要了解生命体生存的全局影响要素和依赖性,才能准确判定病源在哪里。而对于DBA来说,同样也要在掌控数据库的全局依赖性、全局同步协作处理及具体业务流程的情况下,才能真正将Oracle的性能优化提高。

正是因为这两个方面的原因,导致专科医生和精通故障处理的DBA很难很好地从表象透析本质,从而找到最恰当的解决办法。

相信大家从上述案例中已经很清晰地看到性能优化和故障解决的区别:性能优化关注全局和流程,以及流程之间的协调性;而故障解决关注局部和局部的有效性。