本节书摘来自华章计算机《Oracle数据库性能优化方法论和最佳实践》一书中的第2章,第2.3节,作者:柳遵梁 潘敏君 应以峰著,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.3.1 RTA方法论简述响应时间分析(Response Time Analyze,RTA)的性能优化方法论是基于OWI的性能优化方法论发展起来的,标志着Oracle开始认识到Oracle性能优化其实就是一个流程改善的过程(减少响应时间),首次在性能优化上跳出了IT设备的观点,从业务流程优化的角度来考虑问题。在任何场合下,流程改善或者性能优化最为适当的方法就是RTA。Oracle从9.2版本开始提供RTA,在Oracle 10g中进行了进一步的完善。RTA优化方法论可以采用下面的简单公式来描述:响应时间(Rt)=服务时间(Ts) + 等待时间(Tw)Rt = Response time = Ts + Tw = Time for Service + Time for Wait = St + Wt = Service Time + Wait Time = St + Qt = Service Time + Queue TimeTs = Service Time = CPU Time = Oracle Kernel code execution timeTw = Wait Time = Queue Time = Oracle Wait event time = iowait + Networkwait + concurrencywait + otherwaitRTA是流程改善(性能优化)的最佳利器。流程最基本的单元是SQL,其次是事务。我们可以进一步把统计上升到session和全局。Oracle 9i仅实现了基于session和系统全局的RTA,还没有完整的流程概念。Oracle 10g完全确定了时间分析模型,特别是Oracle 10g引进了接近实时的业务流程跟踪(v$active_session_history),可以很好地完成RTA。Oracle 11gR2中RTA可检测体系的构成如下。
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实现了大量的响应时间统计指标。2.3.2 RTA方法论的不足和改善通过RTA的优化方法,虽然Oracle认识到性能优化事实上就是流程改善,但是直到现在,Oracle并没有清晰地体现出流程的概念,也没有真正认识到数据库业务流程仅是全局性业务流程的一部分,要完成复杂的全局性业务优化,还需要付出艰辛的努力。相信随着Oracle版本的不断更新,RTA方法论会越来越成熟。目前11gR2版本的RTA依然没有拓展到End to End RTA,使其面临多层软件体系和复杂网络体系的性能不足。End to End RTA的表示公式如下:Rt = End to End Response Time = DB Time + Tier Time = CPU Time + Queue Time + Tier Queue Time目前RTA优化方法论的最为重大的问题在于,无法衡量一个轻载系统和一个重载系统的区别,这样在优化过程中很容易就会重新走到OWI方法之上,RTA方法论只是成为一个引导甚至是噱头。其中根本性的问题在于,目前的RTA方法论没有把输入变量引入RTA方法论中,没有建立一定的上下文,最终导致RTA方法论的落地比较艰难。再来看吞吐量和响应时间曲线图,目前的RTA还没有从根本上认识到这张图给予RTA方法论的重大价值。
相关资源:敏捷开发V1.0.pptx