书翻译的不错,是国内为数不多的针对sql性能诊断方面比较深入全面的书籍。读完一遍受益匪浅,准备多拜读几遍。对于第2.3章的游标解析有点疑惑。 我感觉查找是否存在可共享的游标,是不是在检查语法,语义及访问权限之前呢
共享有两种类型. 1. 在shared pool里面共享 这种情况下,除非session_cached_cursors参数大于0,否则必须先进行语法/语义检查,否则到shared pool里面去查找是否有可共享的游标根本没有意义,因为这个SQL可能根本无法执行,找到有能如何,,再说找游标这个动作比语法/语义检查的成本是要高的,,因为这涉及到shared pool里面相关latch的获取与搜索. 2. 在PGA里面共享,, 在这种情况下, 程序是直接根据这个游标的handle来进行搜索,,其实就是一半意义上的statement cache,,所以进行语法/语义检查的成本一半会超过直接根据游标handle搜索可用游标的成本..