简述”parse calls”
By Jonathan Lewis, Translated By Jametong
关于统计信息”parse calls”的涵义,市面上流传着大量的含糊的说法.记住下面这一点很重要,这个统计项仅仅统计OCI库一种特定类型的调用(Call),一次parse call需要的工作量随着情境的不同可能会产生相差很大,有时它所做的工作量非常小,从而可以不用担心.
一次”parse calls”可能:
a) 不得不优化这条SQL语句,因为它无法在库缓存(Library Cache)中找到匹配项.
b) 在库缓存中找到了对应的语句,但是仍然由于各种原因需要对其进行优化,例如:之前的执行计划已经被刷出内存,或者由于不同的用户在调用,同样的SQL文本应用到了不同的对象.
(a),(b)是我们一般意义上理解的hasd parse
c) 在库缓存中找到了对应的SQL语句,并且不需要对其进行优化,因为它的执行计划仍然存在,并且用户也有相应的权限.
这一条是我们一般意义上理解的soft parse
d) 当通过session cursor cache或pl/sql cursor cache操作时,可以直接找到语句在库缓存中的位置,从而完全不需要搜索库缓存.
这一条是我们一般理解的soft soft parse (最初应该来自于Asktom的叙述)
当Oracle增加”parse calls”的计数器时,你仍然需要搞清楚这次调用到底对应于(a),(b),(c),(d)中的哪一类调用.
或许只是为了混淆问题,Oracle也可能仅仅记录一次”parse count(hard)”而不记录”parse call”.
阅读(2476) | 评论(0) | 转发(0) |