2.3 响应时间分析优化方法论

2.3.1 RTA方法论简述

响应时间分析(Response Time Analyze,RTA)的性能优化方法论是基于OWI的性能优化方法论发展起来的,标志着Oracle开始认识到Oracle性能优化其实就是一个流程改善的过程(减少响应时间),首次在性能优化上跳出了IT设备的观点,从业务流程优化的角度来考虑问题。在任何场合下,流程改善或者性能优化最为适当的方法就是RTA。

Oracle从9.2版本开始提供RTA,在Oracle 10g中进行了进一步的完善。RTA优化方法论可以采用下面的简单公式来描述:

RTA是流程改善(性能优化)的最佳利器。流程最基本的单元是SQL,其次是事务。我们可以进一步把统计上升到session和全局。Oracle 9i仅实现了基于session和系统全局的RTA,还没有完整的流程概念。Oracle 10g完全确定了时间分析模型,特别是Oracle 10g引进了接近实时的业务流程跟踪(v$active_session_history),可以很好地完成RTA。

Oracle 11gR2中RTA可检测体系的构成如下。

        System Level:   v$sys_time_model
        Session Level:   v$sess_time_model
        SQL Level:        v$sqlstat,v$sql_monitor
        Realtime Level: v$active_session_history
        Snapshot Level: dba_hist_sess_history
        Minter Level:   v$metric,v$metric_history

Oracle在v$sys_time_model和v$sess_time_model中给出了以下不同阶段和操作的响应时间指标:

❑ DB time;

❑ DB CPU;

❑ background elapsed time;

❑ background cpu time;

❑ sequence load elapsed time;

❑ parse time elapsed;

❑ hard parse elapsed time;

❑ sql execute elapsed time;

❑ connection management call elapsed time;

❑ failed parse elapsed time;

❑ failed parse (out of shared memory) elapsed time;

❑ hard parse (sharing criteria) elapsed time;

❑ hard parse (bind mismatch) elapsed time;

❑ PL/SQL execution elapsed time;

❑ inbound PL/SQL rpc elapsed time;

❑ PL/SQL compilation elapsed time;

❑ Java execution elapsed time;

❑ repeated bind elapsed time;

❑ RMAN cpu time (backup/restore)。

Oracle在v$sqlstat中标记了关于SQL语句的响应时间指标:

❑ CPU_TIME;

❑ ELAPSED_TIME;

❑ AVG_HARD_PARSE_TIME;

❑ APPLICATION_WAIT_TIME;

❑ CONCURRENCY_WAIT_TIME;

❑ CLUSTER_WAIT_TIME;

❑ USER_IO_WAIT_TIME;

❑ PLSQL_EXEC_TIME;

❑ JAVA_EXEC_TIME。

Oracle在v$active_session_history中实现了基于近实时的流程流逝过程,特别是在11gR2版本中已经完全实现基于session的逐条SQL的时间流逝。下面是v$active_session_history关于SQL实时执行的相关信息:

❑ SQL_ID;

❑ WAIT_TIME;

❑ SESSION_STATE;

❑ SQL_EXEC_ID;

❑ SQL_EXEC_START;

❑ Time Model;

❑ IN_CONNECTION_MGMT;

❑ IN_PARSE;

❑ IN_HARD_PARSE;

❑ IN_SQL_EXECUTION;

❑ IN_PLSQL_EXECUTION;

❑ IN_PLSQL_RPC;

❑ IN_PLSQL_COMPILATION;

❑ IN_JAVA_EXECUTION;

❑ IN_BIND;

❑ IN_CURSOR_CLOSE;

❑ IN_SEQUENCE_LOAD;

❑ TM_DELTA_TIME;

❑ TM_DELTA_CPU_TIME;

❑ TM_DELTA_DB_TIME。

在视图v$metric中Oracle实现了大量的响应时间统计指标。