《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 11gR1 & R2和Oracle 12c等版本的更新。从Oracle 7开始奠定Oracle的江湖地位,Oracle 8开始超越,到Oracle 8i的大红大紫,以及Oracle 9i以来的持续保持和发展,每个版本都有其特色和定位。在Oracle的主要发展版本中可以看到Oracle性能优化方法论的持续发展。Oracle 7中成熟的命中率分析方法,Oracle 8开始出现OWI(Oracle Wait Interface)的影子,到Oracle 8i,OWI开始走向前台并快速成熟起来。由于OWI方法的简单实用,目前它是Oracle性能优化方法论中的主流。Oracle 8i能大红大紫应该有OWI方法的贡献。从Oracle 8i开始,Oracle的性能优化方法论远远超过了其他同类的数据库,Oracle真正成为性能优化就绪的数据库。Oracle 9i开始出现TBA(Time Based Analyze)和基线管理,并在Oracle 10g版本中成熟,在Oracle 11g版本中持续完善。从Oracle 10g开始,Oracle认识到平均化的负面影响,使性能检测数据的粒度越来越细致,已经可以快速发现平均化可能面临的问题。
Oracle 11gR2中的TBA性能分析方法论还不太成熟,但是TBA方法已经在一些复杂的性能优化案例中体现出了威力。除TBA之外,Craig Shallahamer提出了UOWTBA(Unit of Work Time Based Analyze)方法论,笔者认为UOWTBA是TBA方法的重大改善,可使TBA方法被真正有效地使用。本书将以UOWTBA方法为基础,提出了基于流程、资源和组件的综合性能优化方法论,构建了全新的Oracle数据库性能优化的可测量体系。

2.1 基于局部命中率分析的优化方法论

案例描述:某市工商局的综合业务处理系统报告长期以来在业务忙碌的时候运行缓慢。笔者指导客户生成AWR报告,发现Cache Hit Ratio只有72%,Top 5 wait主要为db f?ile sequence read和db f?ile scattered read。检查SGA buffer cache配置,只有375MB。简单增加buffer cache到2GB,所有性能问题都消失。
在目前,一个性能优化工作者遇到上述案例的性能优化需求,与中彩票类似,一般只有在菜鸟安装的数据库中才会存在。
基于命中率的分析方法是一个古老的性能优化方法论,不仅是在Oracle数据库中,在Sybase、DB2等数据库,甚至在任何IT设备中都存在基于命中率的分析方法。对于Oracle数据库而言,局部命中率的分析方法基于以下朴素的观点:如果构成系统的每个零件都表现优异,那么整个系统的表现也是优异的。当然,任何具有流程知识的人员都知道以上观点是不可靠的。

如图2-1所示,以我们的经验来看,其中B路段会成为高吞吐量场景中的瓶颈,会导致整条马路的车流不畅(那是因为有全局观点了)。但是,如果站在B路段内部来看问题,即使在业务最高峰的时候,B路段也表现出运行非常流畅,吞吐量表现极好,也许会成为表现最好的路段(如臭名昭著的新岭隧道,有兴趣的读者可以上网搜索一下)。基于命中率的分析方法与B路段的观察者和管理者一样,它只关心内部的表现或者自己的表现。
命中率的分析方法作用于性能优化,具有以下致命的缺陷。
命中率分析仅关注和作用于自身,不关心外部信息。
这里以马路收费站作为例子,命中率分析方法仅关心通过收费站的吞吐量是否正常,而看不到等待穿过收费站的长长的队伍。从命中率的观点出发,只要收费站操作顺利,不出现故障,即使队伍排成10km的长龙也是性能优异的。
命中率分析方法通过全局平均化模糊了个体,而大部分性能问题都是基于个体的。
比如某个心外科手术医生对于心脏搭桥手术的成功率为98%,每年做500例手术,但是对于那10个落在2%的病人来说成功率就不是98%,而是100%丢了性命。
尽管命中率分析方法明显不可靠,但由于其获取数据的成本低廉以及易于理解,也具备描述目标基本性能的能力,事实上,它已成为IT设备甚至生活中工作性能的标准描述方法。对于命中率分析方法,我们可以这样来描述它:命中率分析结果优秀,不能保证业务系统或者数据库具有优异的性能;命中率分析结果不好,基本可以确认业务系统或者数据库不具备优异的性能。在Oracle性能优化中,命中率分析方法不足以成为独立工作的方法论,但必须成为辅助分析的一部分,只有确保Oracle每一个部件自身的工作表现优异才可以使业务性能表现优异,Oracle的某个部件工作表现不正常,几乎可以断定业务性能不会反应良好。事实上,我们只要把视野抬高一寸,把自身部件和设备作为全局流程处理过程中的一个节点,自然就会把输入和输出作为衡量自身部件和设备的重要衡量因素,从而使古老的命中率分析方法依然在最新的性能优化时代发挥出其固有的作用。
命中率可以体现在不同的颗粒度上,如系统全局层、会话层、对象层和SQL层等。下面以buffer cache命中率来说明命中率分析的不同层次。
计算公式:buffer cache hit ratio = logical reads/ (logical reads + physical reads)
系统全局层:v$sysstat或者V$BUFFER_POOL_STATISTICS
会话层:v$sesstat或者v$sessio对象层;v$segstat或者v$segment_statistics
SQL层:v$sqlarea
具体到某session的一条SQL或某一时间段的命中率,还可以通过SQL Trace或者10046跟踪得到,如下:

时间: 2024-09-14 11:58:22

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

《Oracle数据库性能优化方法论和最佳实践》——1.2 性能优化目标的确定和衡量

1.2 性能优化目标的确定和衡量 性能优化,顾名思义就是一个改善的过程,通过这个过程实现从当前A到B的目标,其中A和B必须可以被描述和衡量.其中,A为当前状态的描述和测量.B为需要达到目标状态的描述和测量.很遗憾的是,在现实的Oracle性能优化实践中,很多情况下A和B不可描述或未被准确描述,只知道我要变快,而且是尽可能的快,最终使性能优化变成一锅乱炖.大家都知道,性能优化的常规目标是使响应速度变快,但快和慢是相对而言的,如果两者没有一致的描述基准,那么就会产生问题.比如,如果觉得现在的系统速度

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

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

阿里云数据库专家玄惭:云数据库超大流量峰值保障最佳实践

大流量高并发互联网应用实践在线峰会官网:https://yq.aliyun.com/activity/112 峰会统一报名链接:http://yq.aliyun.com/webinar/join/49 议题名称:<云数据库超大流量峰值保障最佳实践> 议题简介:本次演讲收集整理了自RDS成立至今,在历次大流量峰值中如何保障活动中云数据库备战的最佳实践,包括之前的改造,压测和扩容:期间的监控,预案执行和应急处理:之后的收容和总结.力求全链路地帮助客户安全稳定地渡过超大流量峰值,让在你备战过程中少走

新手:oracle数据库导出时报错,用的是toad for oracle软件导出整个数据库

问题描述 新手:oracle数据库导出时报错,用的是toad for oracle软件导出整个数据库 Export: Release 10.2.0.1.0 - Production on 星期一 17 3月 2014 14:01:39 Copyright (c) 2003 2005 Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith

oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法

问题描述 oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法 大神们,随便给几个例子参照一下啊,oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法 解决方案 差不多这个意思,http://zhidao.baidu.com/link?url=lYFB7BBbSoybi5mTurmVbI88Q5R78nnhHyQUiMAhF3B4iyA1OiPCxY4xsRS7v_v0kBdbtCVvVlPHhfY9Rerx7K 解决方案二: create or repl

《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数据库性能优化方法论和最佳实践》——1.5 测量和变化

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