《Oracle数据库性能优化方法论和最佳实践》——第1章 Oracle性能优化漫谈 1.1 从生活场景漫谈性能优化

第1章Oracle性能优化漫谈

1.1 从生活场景漫谈性能优化

Oracle数据库性能优化一直是一个让人既胆怯又兴奋的话题,在初级DBA眼里,这是一个神秘的领域,即使是资深的Oracle DBA,也可能无法描述清楚性能优化究竟要做什么,应达成什么目标。那么性能优化究竟是做什么的呢?简而言之,性能优化就是让我们的工作速度变快,快到让我们满意为止。自然,又有读者会问了,我们的工作是什么呢?什么程度才算快,是否可以衡量?看,头疼的问题又来了。
1.1.1 从一个真实病例说起
下面是本人的真实经历,也许很能够说明一些问题:
不知道从什么时候起,我开始头疼,主要是半边头疼,有时候会伴随眼睛疼和牙齿疼,疼痛顺序一般为头疼→眼睛疼→牙齿疼。当持续头疼根本不能够工作的时候,我去看医生了。先到神经内科做了脑部CT检查之后,医生说没有多大问题,估计是压力大、劳累导致供氧不足,属于亚健康状态,要多锻炼。脑部没问题当然很开心,不过疼痛的问题依然没有解决,最终导致无法工作。既然可能是最近太累的缘故,那么选择给自己放假,到三亚去度假。到三亚的第二天,头疼就消失了,我很开心地认为确实是前段时间太累了。在三亚呆的这段时间,一直没有头疼过。
可回来上班后不久,我头疼的毛病又开始发作,只能继续上医院。这次去了脑外科,医生检查之后也没看出什么毛病,开了一些老年人服用的舒缓血管的药,看看是否有效。药吃完了,头疼依旧。老婆给我买了一些虫草,以加强供氧和营养。吃了1个月的虫草后,居然头疼病好多了。我再次到脑外科看医生,医生不认可吃虫草对头疼有好处。我问医生,是否有可能是牙齿疼痛引起的,医生同样不认可。
由于我有鼻窦炎的老毛病,所以就去耳鼻喉科看医生。耳鼻喉科的医生看了之后,初步判断是鼻窦炎引起的头疼,说需要连续吃3个月左右的药。在头疼难当的情况下,我坚持吃了3个月治疗鼻窦炎的药,可惜头疼依旧,而鼻窦炎已经极其轻微了,我再次提出牙齿的问题,医生同样不认可。耳鼻喉科不行,我开始找眼科医生看。经过眼科医生全面的检查之后,认为眼睛有些炎症,但应该不会与头疼产生关联。无论如何,我还是坚持点眼药水,吃药。
后来公司体检,由于牙齿会疼,所以顺便看了牙科医生。我再次提起牙齿庝是否会引起头疼的问题,医生表示应该关系不大,不过表示可以把牙神经腐烂掉以看看是否存在关联。非常神奇的是,医生在把牙神经腐烂之后,我的头疼立即消失了,基本确认了牙齿疼和头疼之间的关系。
毕竟是关系到脑部的大事,还是不放心。我有一个脑外科的同学回国之后,我马上去找他,再次确认了脑部没有问题,也确认了牙齿疼是有可能会引起头疼的,而且同样的神经也会导致眼睛疼。
人体是一个高度协作的有机生命体,任何一个环节出现问题,就可能会导致不舒服。Oracle数据库虽然没有人体复杂,但也是一个高度协作的同步系统,任何一个环节出现问题,都有可能导致最终的业务系统性能变慢。为什么性能的优化就像某些疾病的诊断一样,处理起来如此困难,原因主要有以下两点:
无论是医生还是DBA,都习惯于以部件分解的方式来看待问题。医生把人体分解成为一个个独立的器官;DBA把Oracle数据库分解成了实例、SGA、数据库以及更细的部分。
医生要对人体工作流程机制有全局性的认识,还要了解生命体生存的全局影响要素和依赖性,才能准确判定病源在哪里。而对于DBA来说,同样也要在掌控数据库的全局依赖性、全局同步协作处理及具体业务流程的情况下,才能真正将Oracle的性能优化提高。
正是因为这两个方面的原因,导致专科医生和精通故障处理的DBA很难很好地从表象透析本质,从而找到最恰当的解决办法。
相信大家从上述案例中已经很清晰地看到性能优化和故障解决的区别:性能优化关注全局和流程,以及流程之间的协调性;而故障解决关注局部和局部的有效性。
1.1.2 如何改善宝马汽车的运行速度
想象这样一幅画面:一辆性能优异的宝马汽车,以时速100km轻松地行驶在路上,一路风光无限好。可不知从什么时候起,它的速度渐渐慢了下来,从时速100km减到95km,再减到80km、60km、40km,似乎还有继续减慢的趋势。如果这时请你猜猜是什么原因导致的,你会如何判断?可能很多人的第一想法是车坏了,但如果我告诉你车看起来依然光鲜,自动化检查也提示汽车没有任何问题呢?你又会想到什么?马路变窄?如果我说走的是一条8车道的马路呢?是不是有点傻眼了?
假设就在我们分析问题的这个时段,车速突然又加快了,时速逐渐恢复到100km,而且持续观察一段时间,比如30分钟,发现它已经稳定在了100km,似乎一切都正常了,让人不禁欢喜。但是,如果你是一位DBA,相信在这个时候,不会就此放过前面的问题,职业习惯会让你心存疑虑:为什么宝马汽车会有一段时间速度不正常,到底是什么导致的,下次会不会再次出现?
宝马汽车在马路上的运行状况是最为典型的业务性能优化场景,作为一个性能优化者,必须要明晰是什么原因导致这种情况的,并且应了解该如何进行改善。
每个人都习惯从自己的专业知识角度去分析问题,有句话说得好,我手中只有一个锤子,那我看哪里都是钉子,总要让我的锤子发挥作用吧。事实上,如果我们的视野从宝马汽车上移开,也许问题就会豁然开朗。宝马汽车性能优异,保养良好,可这并不是跑得快的唯一前提,一辆汽车的行驶速度是由很多因素决定的:汽车性能及状况、司机的技能和状态甚至心情、当时的路况、天气等,这些要素共同决定了汽车会以什么样的速度运行。
作为一个性能优化工作者,可能也会面对类似上面的问题:业务系统突然跑得慢了,可是我的系统没有问题啊,数据库也没有任何问题呀,到底是怎么回事呢?数据库就好比是宝马汽车行驶时的马路,不过,这条马路并不是宝马汽车的专用通道,还会有其他车辆(如拖拉机)在行驶。我们不能说马路有8车道宝马汽车就一定跑得快,因为跑在马路上的其他汽车以及天气的变化,甚至行人都有可能左右宝马汽车的速度,比如,汽车变道甚至发生碰撞,天色变暗、打雷下雨以及暴雨或大雾,行人过马路等都会对车速有影响。我们也不能说速度变慢了就增加车道(如从4车道变成8车道),经验告诉我们,再宽的马路也会堵车,再好的汽车也会抛锚。性能优化工作者从某种程度上来说就相当于交警,他要根据马路上的繁忙程度进行调度,该快的快,该慢的慢,该拖车的拖车,该变道的变道,需要从8通道变成12通道的时候也要勇敢提出来。同时,他也要知道不能把台风天的汽车行驶速度和艳阳天进行比较,即使是同一辆汽车或同一个司机或同一条马路或同样的拥塞。

时间: 2024-09-08 05:59:37

《Oracle数据库性能优化方法论和最佳实践》——第1章 Oracle性能优化漫谈 1.1 从生活场景漫谈性能优化的相关文章

《Oracle数据库性能优化方法论和最佳实践》——2.3 响应时间分析优化方法论

2.3 响应时间分析优化方法论 2.3.1 RTA方法论简述 响应时间分析(Response Time Analyze,RTA)的性能优化方法论是基于OWI的性能优化方法论发展起来的,标志着Oracle开始认识到Oracle性能优化其实就是一个流程改善的过程(减少响应时间),首次在性能优化上跳出了IT设备的观点,从业务流程优化的角度来考虑问题.在任何场合下,流程改善或者性能优化最为适当的方法就是RTA. Oracle从9.2版本开始提供RTA,在Oracle 10g中进行了进一步的完善.RTA优

《Oracle数据库性能优化方法论和最佳实践》——2.6 流程、资源和组件优化方法论

2.6 流程.资源和组件优化方法论 流程.资源和组件优化方法论是本书几位作者综合多年性能优化方法论实践提出的最新的Oracle业务系统性能优化方法论.流程.资源和组件优化方法论以流程响应分析为核心,辅助以流程处理的组件和涉及的资源分析,发现导致性能问题的根本原因,并采取适当的手段进行性能改善.本书从流程.资源和组件优化方法论出发,全面构建性能优化的可测量体系,并通过大量的性能优化实践案例来验证方法论的有效性.2.6.1 吞吐量和响应时间关系曲线 吞吐量和响应时间关系曲线是流程.资源和组件优化方法

《Oracle数据库性能优化方法论和最佳实践》——1.3 吞吐量和响应时间

1.3 吞吐量和响应时间 吞吐量和响应时间是衡量Oracle业务系统的基本指标,也是业务系统性能的终极指标.如何选择恰当的指标单元来描述吞吐量和响应时间,并且熟练运用吞吐量和响应时间之间的关系是性能优化工作者最为重要的学习和实践.吞吐量和响应时间的关系曲线如此重要,以至于本书几乎所有的章节都是为了帮助大家更好地选择恰当的吞吐量指标,以及更好地理解吞吐量和响应时间的关系曲线.Oracle虽然从Oracle 10gR1就开始提供Time Based Analyze(TBA)性能优化分析方法论,但显然

《Oracle数据库性能优化方法论和最佳实践》——2.5 基于资源瓶颈分析的优化方法论

2.5 基于资源瓶颈分析的优化方法论 2.5.1 基于资源瓶颈分析优化方法论简述 Oracle要做优化,大部分人首先会想到瓶颈在哪里?资源瓶颈分析是如此之普及,以至于无论懂还是不懂的人都知道"瓶颈"这个术语,都知道性能优化首先要找到这个瓶颈,然后消除这个瓶颈.数据库系统的资源主要包括:CPU.内存和虚拟内存.I/O子系统.网络子系统. 绝大部分开发人员在写程序的时候都假设资源是无限的,CPU是无限快,内存是无限多,磁盘无限大并且像内存一样快,网络带宽无限并且像光速一样运行.事实上,大家

《Oracle数据库性能优化方法论和最佳实践》——1.5 测量和变化

1.5 测量和变化 1.5.1 测量和性能 没有测量就没有性能,任何科学都建立在可测量的基础之上.Oracle数据库和基于它的性能优化理所当然是一门科学,而不是一门艺术.科学的性能优化首先必须是可以建立测量的目标系统性能指标.一个无法测量的系统或者一个只能依赖于人的眼睛.耳朵等器官来进行感知的系统是无法进行性能优化的.为了完成性能优化,需要做大量的可测量性工作.幸运的是,Oracle对于可测量的性能付出了巨大的努力,使其性能相关的测量指标远远超出了其他数据库. 从性能优化的角度出发,可以从以下几

《Oracle数据库性能优化方法论和最佳实践》——1.7 Oracle性能优化的神话和误区

1.7 Oracle性能优化的神话和误区 Oracle性能优化工作是Oracle数据库科学最为神秘莫测的领域,自然也就会流传着各种传言和八卦.本书最主要的目的就是真正使Oracle性能优化成为一门严谨的科学,使任何阅读并且理解本书内容的读者可以比较简单地完成Oracle性能优化工作,使自己在其他人面前成为"巫师"或"神秘的对象".1.7.1 艺术和科学 从百度.Google等网站搜索"性能优化艺术",会出现大量的条目,部分Oracle性能优化的图

《Oracle数据库性能优化方法论和最佳实践》——1.4 Oracle性能优化工作的分类

1.4 Oracle性能优化工作的分类 在Oracle上进行性能优化时,不同场景下的优化工作方法和内容有很大的不同.下面从实践角度来展开优化工作的分类.1.4.1 上线优化或从未达到过性能期望的系统优化如果业务系统未进行充分的性能测试就上线,那么有相当一部分会出现性能问题,不会出现性能问题的系统往往建立在有强大硬件的基础之上.这类缺乏性能设计考虑的业务系统部分或全部具有以下特点.开发人员(业务系统)假设资源是无限的,可以任意使用,忘记了任何系统都是在一个资源受限的系统中运行业务.开发人员(业务系

《Oracle数据库性能优化方法论和最佳实践》——第2章 Oracle性能优化方法论的发展 2.1 基于局部命中率分析的优化方法论

第2章 Oracle性能优化方法论的发展 Oracle数据库在开发和使用过程中对数据库的性能优化极为重视,几乎在每个版本的更新中都会对可优化的数据库做出改善.不仅如此,Oracle数据库还会使用优化方法来指导性能优化,会不断推出新的性能优化方法论,并依据优化方法论持续完善其可观察的性能优化体系.从Oracle 6到现在的Oracle 12c,经历了Oracle 7.Oracle 8.Oracle 8i.Oracle 9i & R2.Oracle 10gR1 & R2.Oracle 11gR

《Oracle数据库性能优化方法论和最佳实践》——2.4 基于工作单元的响应时间分析优化方法论

2.4 基于工作单元的响应时间分析优化方法论 2.4.1 UOWTBA优化方法论的导入在RTA工作方法论的基础上,Craig Shallahamer结合吞吐量和响应时间关系曲线图提出了基于工作单元的响应时间分析方法论(Unit of Work Time Based Analyze,UOWTBA或者Unit of Response Time Analyze,UOWRTA).UOWTBA方法论相较于RTA方法论而言,在强调响应时间时,同等强调了吞吐量的重要性,它通过衡量操作单元的响应时间而不是绝对时

《Oracle数据库性能优化方法论和最佳实践》——3.2 数据库登录流程的相关指标与优化

3.2 数据库登录流程的相关指标与优化 2.6节已经介绍过数据库登录流程的分解如下: Step 1:客户端登录请求. Step 2:listener处理和响应. Step 3:服务进程派生. Step 4:进程初始化和session初始化. Step 5:用户验证和权限判断. Step 6:session审计. Step 7:登录触发器. Step 8:响应客户端. 对于数据库登录流程来说,业务需求表述的输入请求和技术层面的输入请求完全一致.每次数据库登录都对应着一次客户端登录请求,输出响应时间