本文翻译自Jonathan Lewis的Blog Entry Nutshell – 2
简述”parse calls”
By Jonathan Lewis, Translated By Jametong
关于统计信息”parse calls”的涵义,市面上流传着大量的含糊的说法.记住下面这一点很重要,这个统计项仅仅统计OCI库一种特定类型的调用(Call),一次parse call需要的工作量随着情境的不同可能会产生相差很大,有时它所做的工作量非常小,从而可以不用担心.
一次”parse calls”可能:
(a),(b)是我们一般意义上理解的hasd parse
这一条是我们一般意义上理解的soft parse
这一条是我们一般理解的soft soft parse (最初应该来自于Asktom的叙述)
当Oracle增加”parse calls”的计数器时,你仍然需要搞清楚这次调用到底对应于(a),(b),(c),(d)中的哪一类调用.
或许只是为了混淆问题,Oracle也可能仅仅记录一次”parse count(hard)”而不记录”parse call”.
No related posts.

soft soft parse, Craig 称之为softer parse.
鄙人不清楚什么是PL/SQL cursor cache.
session cursor cache和PL/SQL存储过程里面的cursor还是不同的.
被session cursor cache缓存的cursor, 还需要在?里面进行一次定位(Locate),消耗CPU, 但不需要Latch/Mutex, 自然串行.
“?”表示具体Shared_pool(或者PGA)里面的一块区域,鄙人还没最后搞清楚.
PL/SQL存储过程里面的cursor不会被close, 是100%的parse once, execute many.
JDBC里面需要启用Statement Cache, 来解决这个问题.
session cursor cache 在使用的时候, 分几种情况,
前面三次并不是表现为cache hit,但是还是需要做semantics check (authentication), 只有在三次以上时才不需要再做authentication.
到11g之后,,plsql cursor cache也依赖于session cursor cache了,,之前是完全在pga里面的..
多谢指导, 哈哈.
鄙人依然一头雾水,越深入,越混乱.
希望您有空写一篇文章给专门解释一下cursor的各种状态和使用机制.