说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
1、语法检查(syntax check) 检查此sql的拼写是否语法。
2、语义检查(semantic check) 诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(prase) 利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
4、执行sql,返回结果(execute and return) 其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值; 假设存在,则将此sql与cache中的进行比较; 假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。 诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。 创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。 这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。
分享到:
相关推荐
oracle监听执行,可以监听应用执行的sql语句
Oracle中SQL语句执行效率的查找与解决..
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
Oracle常用sql语句整理 Oracle常用sql语句整理 Oracle常用sql语句整理 Oracle常用sql语句整理 Oracle常用sql语句整理 Oracle常用sql语句整理
oracle的SQL语句的一些经验总结,里边有很多大家和自己的东西。
Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。执行...
查询ORACLE 系统中当前会话正在执行的有关SQL语句。
此LR脚本是应用于的Oracle的请求报文,此资源为直连Oracle执行SQL进行压测,为方便小伙伴快速开发此类的测试脚本,先已经整理成模板供小伙伴参考。
oracle常用SQL语句下载 oracle常用SQL语句下载 oracle常用SQL语句下载
NULL 博文链接:https://heisetoufa.iteye.com/blog/287301
oracle常用sql语句,数据库常用的sql语句!!!!
Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句
主要给大家介绍了oracle查看执行最慢与查询次数最多的sql语句,文中给出完整的示例代码,相信对大家的学习或者工作具有一定的参考价值,有需要的朋友们下面来一起看看吧。
Oracle学习,常用sql语句汇总,适合新手使用。
对ORACLE-SQL进行一些布局优化,更新它的格式
动态的实现表名的动态的配置及动态的配置所对应的列名
oracle常用sql语句大全 注释完整 放心使用 包含所有常用语句
Oracle——sql语句优化
ORACLE经典语句汇总 -- 字符串左填充和右填充,默认填充空格 -- 产生1~99行数据,少于一位则补0 -- 刪除相同行 -- 随机数 -- 产生业务流水号 -- 查询某张表中有哪些字段 -- 自循环表中 由叶子节点查父节点 -- 查子...
ORACLE常用SQL语句大全.pdf