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实现了大量的响应时间统计指标。