Oracle的硬解析和软解析
2016-04-16 13:04
337 查看
提到软解析(soft parse)和硬解析(hard parse),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
1、语法检查(syntax check)
检查此sql的拼写是否语法。
2、语义检查(semantic check)
诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(parse)
利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
4、执行sql,返回结果(execute and return)
其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;
假设存在,则将此sql与cache中的进行比较;
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
如果上面的2个假设中有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
1、语法检查(syntax check)
检查此sql的拼写是否语法。
2、语义检查(semantic check)
诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(parse)
利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
4、执行sql,返回结果(execute and return)
其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;
假设存在,则将此sql与cache中的进行比较;
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
如果上面的2个假设中有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
相关文章推荐
- 关于根据oracle字段长度更新字段值
- oracle中expdp和impdp(数据泵)
- oracle中的schema
- ORACLE数据库用户账号处于expired状态如何处理
- Oracle操作
- Oracle中的where部分的各个条件的执行顺序(右->左)
- Oracle查询表所属用户
- [备忘]CentOS 7.2 Oracle JDK安装配置
- oracle后台进程详解
- Oracle
- oracle表分区与索引分区
- 【数据库】Oracle数据库----对象视图
- Window7系统64位下安装Oracle 10g出错解决办法
- 【数据库】oracle数据库----内嵌视图
- Oracle学习笔记(十六)——数据字典和动态性能视图
- Oracle学习笔记(十五)——数据库(表)的逻辑备份与恢复
- 怎么用oracle数据泵导数据
- 新增数据文件导致dataguard同步异常
- oracle 恢复到之前某个时间点
- Oracle学习笔记(十四)——数据库管理