Oracle数据库性能模型的研究
2018-10-10王召强润皓
王召 强润皓
摘要:数据库性能评估旨在帮助运维人员分析数据库性能,发现问题,指导调优。本文从Oracle数据库基准指标中筛选出有负载代表性和性能代表性的指标,建立了一种基于负载的性能评估模型。
关键词:Oracle;AWR;性能分析;负载分析
中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2018)07-0072-02
1 基准指标选取
用户响应时间是影响用户体验的首要因素,响应时间越短说明性能越好, 因此一个数据库性能高低主要是通过响应时间来判断的(用户层面的响应时间包含了客户端请求到响应,中间涉及多个环节,这里只讨论数据库时间)。按照Oracle时间模型统计:Response time=Service time+Wait time。服务时间指前后台进程占用CPU的时间,这里只关注前台进程,从中选取最有代表性的DB CPU和CPU TIME,计算得到一段时间内每秒、每执行及每调用的值,作为关键性能指标。
等待时间由各种等待事件产生,等待事件分多种类型,如系统IO,用户IO,并发等。我们选取一段时间内产生的TOP 20等待事件,按等待类合并,计算得到TOP 3等待类的平均等待时间,作为关键性能指标。
我们同时加入了一些和时间无关的指标,如数据缓存命中率、共享池命中率及LATCH命中率等,作为辅助指标参与到性能评估中。
评估数据库性能需要结合负载来分析,不同业务系统或同一系统在不同时段负载可能大不相同。不同负载下,数据库性能指标会发生变化,单一的用一个策略进行性能评估,结果准确性会大打折扣。因此我们选取一些负载相关的指标建立负载模型,计算出负载指数作为衡量负载大小的依据。性能模型基于负载的大小,应用不用的评估策略。
在负载指标的选取上,我们参考了AWR报告中的Load Profile,它提供了IO、并发等方面的指标作为负载参考,如每秒日志量、每秒逻辑读、每秒物理读、每秒物理写、每秒用户调用、每秒活跃会话等,我们将这些指标纳入负载模型并分配权重。
2 指标采样方式
指标从AWR数据中抽取,周期扫描AWR,如有新的AWR产生则用PL/SQL脚本进行采集。采集方式如下:
(1)确认目标库和起点SNAPSHOT ID。
(2)脚本找到与起点相邻的SNAPSHOT,查询出原始指标,通过计算,得到最终指标值。此外,从DBA_HIST_SEG_STAT等表中可以直接查询到部分指标的delta值。脚本同时返回下一个SNAPSHOT ID,这将是下次采集的起点。
3 模型与评估
3.1 模型
(1)负载模型总分100分,得分划分成A-D负载等级,依次表示负载很高,较高,一般和很低。得分=∑指标得分,考虑到指标缺失的情况,实际得分=得分×(1+缺失项占比(%))。
(2)负载指标划分4级阈值范围,等级分依次为4、3、2,1分,指标得分的计算公式为:等级分/4×权重占比(%)。
(3)性能模型总分100分,得分计算方式同负载。
(4)性能指标设定4级阈值范围,需指定适用的负载等级。得分计算方式同负载,如表1。
3.2 评估
按照上述模型计算得到的结果绘图1,可以直观得到数据库运行过程中负载的变化情况,以及在不同负载下的性能表现。
4 结语
基于負载的性能分析模型,通过针对不同的负载等级应用不同的性能评估策略,可以更加准确的反映Oracle数据库的性能表现,同时也可以为运维分析提供更多更准确的优化指导。
参考文献
[1]Shallahamer, C. Oracle Performance Triage: Stop The Bleeding!OraPub White Paper,2001.
[2]Jain, R. The Art of Computer Systems Performance Analysis. John Wiley & Sons,1991.ISBN 0-471-50336-3.