原标题:性能测试关注的 Oracle 指标
作者:杨建旭,在自动化测试、性能测试方面有深入的研究,现任中国人民银行清算总中心性能测试团队负责人,高级技术经理。
社区专栏:系统性能测试 http://www.talkwithtrend.com/home/space.php?p=blog&uid=898849
数据库的性能优化是个非常复杂的事情,熟悉Oracle的专家能手更是数不胜数,所以写了数十篇文章都没敢写过Oracle。直到最近,单位请来了Oracle原厂培训,请Oracle大师来给新入职的同学做培训,作为张罗这事的参与者之一,笔者也跟着听了一天,竟然发现大师有几个地方讲错了,主要是在理论联系实际的问题分析、AWR报告解读方面,提问之后竟然把大师挂在了台上。后来想想,大师也有不懂的,我怕什么呢,写!从性能测试的角度看Oracle,我们换个视角。
一个业务的响应时间受到这个业务所以环节性能的影响,如果被测系统涉及到数据库,则需要对数据库指标进行监控。这里的数据库指标并不是服务器本身的CPU、内存、IO等指标(当然,这些指标也是要监控的),而是指从数据库角度来看的指标,例如Buffer命中率、SQL执行时间等,本文介绍Oracle数据库的指标。
数据库的指标千千万,一般来说,会重点关注一些指标,这里就介绍一下作为测试人员需要关注的指标。
关注指标之前,需要做的是关注Oracle系统的告警(例如:表空间满了)。只有告警消除后,各类指标才是正常状态下的指标。
查看Oracle性能指标的方法有不少,本文主要以AWR报告为目标做介绍。自动工作量存储(Automatic Workload Repository AWR)是随着数据库一起被安装的,它不仅能收集统计数据,还能从统计数据中分析出度量数据,后续会详细介绍AWR,本文主要介绍指标本身的概念。
SQL语句执行时间、吞吐量
数据库的用户是应用,应用使用数据库来执行SQL语句。SQL语句的执行时间最能反映满意用户需要的能力。当一个应用处理速度比较慢的时候,自然会查看数据库的SQL执行时间。
一个数据库有千千万个指标,其他指标即使异常到令人发指,只要用户满意,往往也没有人去刻意做调优。
执行时间:
在AWR>Main Report>SQL Statistics目录下,可以看到如下SQL语句执行时间的分目录。
如果应用程序比较慢,并且比较怀疑是数据库的原因,那么关注一下排在前几位的SQL语句。作为初次观察,关注SQL ordered by Elapsed Time,这个指标是按照整个SQL的执行时间来排序的,以下图为例: