Oracle认证考试辅导:Oracle数据库中的硬剖析和软剖析介绍
发布时间:2010/3/15 16:26:29 来源:城市学习网 编辑:MOON
提到软解析和硬解析,就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
检查此sql的拼写是否语法。
诸如检查sql语句中的对象是否存在及该用户是否具备相应的权限。
利用内部算法对sql进行解析,生成解析树及执行计划。
其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值。假设存在,则将此sql与cache中的进行比较。假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。