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

1.4 Oracle性能优化工作的分类

在Oracle上进行性能优化时,不同场景下的优化工作方法和内容有很大的不同。下面从实践角度来展开优化工作的分类。
1.4.1 上线优化或从未达到过性能期望的系统优化
如果业务系统未进行充分的性能测试就上线,那么有相当一部分会出现性能问题,不会出现性能问题的系统往往建立在有强大硬件的基础之上。这类缺乏性能设计考虑的业务系统部分或全部具有以下特点。
开发人员(业务系统)假设资源是无限的,可以任意使用,忘记了任何系统都是在一个资源受限的系统中运行业务。
开发人员(业务系统)认为只有我一个人在做事,忘记了同时会有很多人在使用,缺乏并发性方面的考虑。
开发人员(业务系统)认为程序在任何时候的处理效率都是一样的,不应该出现大的波动,不应该出现异常。
各种任务调度频率远远超过业务实际需要。
SQL语句消耗了无限的资源。
无法充分利用资源,缺乏并行处理或异步处理的能力。
缺乏有效的索引设计,业务系统并发能力低下。
具有很长的同步处理链条,性能表现极其脆弱。
运行在默认的完全不匹配物理资源的数据库上。
上线优化的场景有些比较简单,有些会很复杂。也许你的运气足够好,仅仅是简单的数据库配置问题或操作系统配置问题,这在DBA力量比较弱的开发商中存在。更多时候,你遇到的会是索引优化问题或SQL优化问题,当然,只要你愿意付出精力,总能完成这类任务。如果你运气不好,遇到除此之外的复杂性能优化问题,就需要你拥有更多的知识和经验,以及更好的协调和沟通能力了。
1.4.2 响应速度逐步变慢的系统优化
在业务正常运行了一段时间或很长时间之后,可能会感觉到业务系统在渐渐地变慢,甚至到了不可忍受的地步,而这是Oracle数据库,或者不仅是它,也是任何IT设备、任何提供服务的物品以及生命体(包括人动物和植物)都会体现出的特征。这时我们需要对其进行保养、修理或优化。一般来说,这类系统具有以下部分或者全部的特征:
随着时间的推移,数据量渐渐变大,而业务系统和数据量具有比较强的线性关系设计。
随着时间的推移,业务在发展,公司在变大,而业务系统和业务及资源具有较强的线性关系。
随着时间的推移,访问量在增大,而业务系统在并发性上的设计考虑不够。
随着时间的推移,数据不断被分享使用,不同业务之间出现并发性和资源上的碰撞。
当然,可能还存在其他的时间堆积,但是主要为以上变化度量。既然业务系统性能是一个逐渐变化的过程,那么只要记录相关指标的长时间关系,自然就可以知道为什么性能会变差,甚至可以简单掌握哪些因子的线性关系比较重大,进而可以通过打破这个线性关系或降低线性斜率来进行性能优化,使业务系统恢复正常运行。
1.4.3 运行过程中突然变慢的系统优化
在Oracle中,除了系统bug外,没有无缘无故的性能问题。即使是Oracle bug,也是因为变化引起了bug而被触发。对这类问题的优化相对比较简单,只要简单检测突然变化即可。即使不知道为什么,只要把变化恢复原状,一般业务系统就可以恢复。当然,对于这类业务系统的性能故障,用户的紧迫度也往往比较高。
应急性性能优化是日常运行中针对业务系统的最为常见的优化工作,类似于故障处理场景。由于OWI方法所具有的实时针对性,所以它在这类优化中被广泛利用,并且效果良好。只要日常收集关键指标及版本变化,通常都能较为快速地完成应急性优化。
从变化的角度来看,一般存在以下几种情况。
新的业务模块上线或进行了补丁修复。
SQL语句执行计划发生变化。
DDL操作导致SQL依赖对象发生变化。
意外的配置变化。
依赖资源发生故障或性能降低,导致吞吐量下跌。
执行了某个意外操作。
某关键进程挂住或死掉。
1.4.4 突然变慢,持续一段时间后又恢复正常的业务系统优化
本书介绍的发生的现象虽然与1.4.3节介绍的类似,但其形成原因往往不同。这种业务系统性能降低的场景通常是周期性发作,维持时间从几秒、几分到几小时不等。一般来说,发生原因为应用系统无法度过业务高峰期,达到了吞吐量限制。
针对达到吞吐量限制的业务性能进行优化时,优化者需要通晓吞吐量与响应时间的关系曲线,了解各种资源的最大吞吐量或能力限制。扩容往往是针对吞吐量限制型优化最为直接的建议,但由于涉及额外投资且需要持续较长时间,因此性能优化者必须有充分的理由来支持扩容,并且要100%保证扩容后可以满足业务性能的要求。扩容是通过扩展资源来支持更高的吞吐量突变点,从而完成业务性能的改善。与扩容相对应的另一种方式自然是更加有效地利用资源:降低单位操作数量或降低单位操作消耗的资源。
1.4.5 基于降低资源消耗的系统优化
事实上,当针对实际的业务系统进行性能优化时,你会发现有相当一部分并未观察到明显的吞吐量或未观察到响应时间的异常,而仅仅是资源消耗达到了非预期值。对于这类问题,可用于优化的时间会相对充裕,优化操作也比较简单,只要简单分析特定资源的影响因子,并从大到小进行排序,逐步优化或只优化影响大的影响因子即可。
1.4.6 预防性日常性能优化
基于降低资源消耗的系统优化应该是预防性日常性能优化的一个变种。预防性日常性能优化依赖于日常监测的性能因子,当这些性能因子达到预先设定的警戒值时就会进行优化,使其回归到正常范围或减缓其增加速度。想要保证一个系统始终保持高性能的运行,预防性的日常性能优化是关键因子,甚至比一种性能设计还重要。作为一个性能优化工作者或运维DBA来说,虽然业务系统的性能设计不由他控制,但是尽可能地延缓业务系统性能问题的来临是完全可以的。
预防性优化的作用主要在于:首先,延缓业务系统的硬件扩容,延迟资金投入;其次,可以使用户对未来性能预期有一定的明确性,从而可以合理安排扩容采购窗口,避免业务系统出现性能问题,提高服务质量。而缺乏预防性优化意识往往意味着一段时间内糟糕的业务系统性能表现以及硬件扩容的紧急采购。若业务系统预防性的日常性能优化做到位,则具备图1-8所示的特征,再次回到吞吐量和响应时间曲线。

预防性性能优化的目的在于不断延缓突变点,使其后移,如图1-8中使突变点从1100左右转移到1380左右,使业务系统可以支持的最大吞吐量不断增加。虽然任何硬件平台和软件平台都会有其自身的吞吐量限制,但预防性维护可通过延迟硬件采购来节省大量的金钱,真正体现出性能优化的价值。
下面来做一个简单的计算。
一个价值500万元的硬件平台,假设将其扩容要求延迟了一年的时间,因此节约了100万元,这代表我们并不是仅仅多获得了1年时间的100万现金使用权,更重要的是这一年时间里硬件的价格会快速下跌,相比1年前,100万元具有更高的使用价值。特别是如果到了知识产权严格保护的年代,硬件的扩容往往意味着软件License授权费用的大幅度增加,这时预防性性能优化的价值几乎是不可估量的。

时间: 2024-09-07 13:00:42

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

《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数据库性能优化方法论和最佳实践》——第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.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数据库性能优化方法论和最佳实践》——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:响应客户端. 对于数据库登录流程来说,业务需求表述的输入请求和技术层面的输入请求完全一致.每次数据库登录都对应着一次客户端登录请求,输出响应时间