两个优化Oracle数据库性能的方法解析|命中率+OWI优化
两个优化Oracle数据库性能的方法解析
Oracle数据库性能优化发展历程
Oracle数据库经过十数年的发展,已经被很多的企业所应用,整体机制已逐渐完善,针对Oracle数据库优化的方法也经过数据库运维人员不断的改进逐渐形成了完整的体系。下面主要对Oracle数据库的各种优化方法做一个对比。
目前Oracle数据库主要优化方法:
基于局部命中率分析的性能优化方法
基于OWI的性能优化方法
基于资源瓶颈分析的优化方法
基于流程分析和响应时间分析的性能优化方法
基于命中率的性能调优方法
如果HIS系统长期以来在业务忙碌的时候运行缓慢,这时候可以指导维护人员生产AWR报告,发现Cache Hit Ratio只有67%,AWR报告Top5 wait主要为db file sequence read和db file scattered read。检查SGA Buffer Cache配置,只有478M。这时候只需要增加Buffer Cache(例如增加到2G)性能问题就会消失。
不过基于命中率调优的方法也具有一定的局限性
1.基于命中率的技术瑞然反映了Oracle内部效率问题,但这些命中率与使用数据库的应用的性能关系不大;
2.命中率分析方法通过全局平均和模糊了个体,而大部分性能问题都是基于个体的。
基于等待时间的调优方法
其他还有:db file sequence read db file scattered read buffer busy waits enqueue、latch free log file parallelwrite log file sync。
Tips:这些等待信息显示Oracle会话等待不同事件所花费的事件,如等待锁、闩、IO,通过分析这些占比较高的等待事件有效完成优化。
Oracle Wait interface
Oracle7.1出现的基于等待事件借口的性能优化,基于等待事件的调优技术经过十多年的应用被广泛接受
优点:
1.OWI方法是快速解决orale性能的最有效方式;
2.OWI方法优化降低了性能优化人员的能力需求。
缺点:
1.OWI事实上并不是从业务(流程)的角度看问题,而是从CPU的角度看问题;
2.解决复杂性能问题有局限性。
OWI分析方法本质上和基于等待时间的调优方法是类似的,都缺乏从整体业务流程出发的概念。但是OWI的好处就是,简单、有效、快速。
数据库优化应该遵循的层次
值得注意的是,在我们开发过程中,一定要使用绑定变量,来减少硬解析,因为大量的硬解析会消耗大量的cpu处理时间,占用大量的Latch。
什么是等待事件:
ORACLE的等待事件,主要分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLW)等待事件。
1.空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分时间。
2.非空闲等待事件针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注和研究的。
如何查看等待事件
1.v$session
2.v$session wait
3.v$session wait history
4.v$sqltext
5.v$active session history
6.v$system event
7.WRH#_ACTIVE_SESSION_HISTORY
8.DBA_HIST_ACTIVE_SESS_HISTORY
等等……
我们可以使用以上试图关联以等待事件为条件查询当前影响性能的sql,并针对这些进行优化。