SQL解析的过程

sql在解析阶段主要完成以下一个步骤:
(1) 包含VPD的约束条件
(2) 语法,语义以及访问权限的检查
            这一步不仅确认sql语句是否正确书写,而且要确认这个算起来语句引用的对象是否都存在,并且确认解析它的这个用户是否有权限来访问他们。
(3) 将父游标保存到库缓存
           只要不存在共享的父游标,就会在库缓存中分配一些内存,并将新产生的父游标保存进去。与父游标有关的关键信息就是这个sql语句的文本。
(4) 逻辑优化 -- 用一定的转换技巧,生成语法语义上等同的新的sql语句。
(5)物理优化 ---------首先,生成与每个逻辑优化产生的sql语句有关的执行计划,接着。根据数据字典找到相关的统计信息或者动态收集的统计信息,计算出一个与执行计划相关的开销。最后,选中最低开销的执行计划。简单来说,查询优化器通过探索搜索空间来寻找最有效的执行计划
(6) 将子游标保存到库缓存  -------------- 首先分配内存,然后将共享子游标存储进去,最后将它与父游标关联,与子游标有关的关键内容是执行计划和执行环境,一旦保存到库缓存,父游标与子游标就可以分别通过视图v$sqlarea和v$sql被具体化。
 
 
当共享父游标与子游标都可用,因而只采取前两个步骤,对应的解析被称为软解析。而当所有的操作都需要执行时,则会被称为硬解析
 
从性能的角度来看,尽量避免硬解析,为什么?
第一: 因为逻辑优化和物理优化都非常依赖CPU的操作。
第二: 需要分配内存来将父游标与子游标保存到库缓存中。由于库缓存是在所有的会话之间共享,库缓存中的内存分配必须是串行执行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7551038/viewspace-619440/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7551038/viewspace-619440/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值