Execute to Parse% 的分析


参考文档:http://www.askmaclean.com/archives/performance-tuning-oracle-awr.html

Execute  to Parse% 指标反映了执行解析比 其公式为 1-(parse/execute) , 目标为100% 及接近于只 执行而不解析。 数据来源v$sysstat statistics parse count (total) 和execute count
在oracle中解析往往是执行的先提工作,但是通过游标共享 可以解析一次 执行多次, 执行解析可能分成多种场景:
hard coding => 硬编码代码 硬解析一次 ,执行一次, 则理论上其执行解析比 为 1:1 ,则理论上Execute to Parse =0 极差,且soft parse比例也为0%
绑定变量但是仍软解析=》 软解析一次,执行一次 , 这种情况虽然比前一种好 但是执行解析比(这里的parse,包含了软解析和硬解析)仍是1:1, 理论上Execute to Parse =0 极差, 但是soft parse比例可能很高
使用 静态SQL、动态绑定、session_cached_cursor、open cursors等技术实现的 解析一次,执行多次, 执行解析比为N:1, 则 Execute to Parse= 1- (1/N) 执行次数越多 Execute to Parse越接近100% ,这种是我们在OLTP环境中喜闻乐见的!
通俗地说 soft parse% 反映了软解析率, 而软解析在oracle中仍是较昂贵的操作, 我们希望的是解析1次执行N次,如果每次执行均需要软解析,那么虽然soft parse%=100% 但是parse time仍可能是消耗DB TIME的大头。

Execute to Parse反映了 执行解析比,Execute to Parse和soft parse% 都很低 那么说明确实没有绑定变量 , 而如果 soft parse% 接近99% 而Execute to Parse 不足90% 则说明没有执行解析比低, 需要通过 静态SQL、动态绑定、session_cached_cursor、open cursors等技术减少软解析。

Execute to Parse% 的分析

分析1 


Parase(SQL) 27.5
Executes(SQL) 28
计算Execute to Parse% 1-(parse/execute) 结果是1.78% ,AWR上是1.74%
select 1-(27.5/28) from dual;


[email protected]>select 1-(27.5/28) from dual;


1-(27.5/28)
-----------

 .017857143


Execute to Parse% 的分析

分析2 


Parase(SQL) 64.5
Executes(SQL) 99.7
计算Execute to Parse% 1-(parse/execute) 结果是35.3% ,AWR上是35.27%
select 1-(64.5/99.7) from dual;


[email protected]>select 1-(64.5/99.7) from dual;


1-(64.5/99.7)
-------------

   .353059178


Execute to Parse% 的分析

分析3 


Parase(SQL) 260.3
Executes(SQL) 262.8
计算Execute to Parse% 1-(parse/execute) 结果是0.95% ,AWR上是0.94%
select 1-(260.3/262.8) from dual;   


[email protected]>select 1-(260.3/262.8) from dual;   


1-(260.3/262.8)
---------------

     .009512938


观察这3个DB的 session_cached_cursor ,使用率都比较大,甚至达到了200%。