ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL在shared pool中的解析过程问题

SQL在shared pool中的解析过程问题

原创 Linux操作系统 作者:tolywang 时间:2010-10-28 13:35:27 0 删除 编辑
Oracle 10.2.0.4   

在网络上看到SQL解析的过程如下,其他过程都了解, 其中 逻辑优化 部分不是太清楚如何运作的,
生成的语法语义上等同的新的SQL语句是什么样子的 ?  难道是类似将SQL中的同义词转化为对应的
具体的table信息或其他实际的 object  等过程 ?  


(1) 包含VPD的约束条件
(2) 语法,语义以及访问权限的检查
(3) 将父游标保存到库缓存
只要不存在共享的父游标,就会在库缓存中分配一些内存,并将新产生的父游标保存进去。
与父游标有关的关键信息就是这个sql语句的文本。
(4) 逻辑优化 --  用一定的转换技巧,生成语法语义上等同的新的sql语句。
(5)物理优化 --  首先,生成与每个逻辑优化产生的sql语句有关的执行计划,接着。根据数据字典找到相关的统计信息或者动态收集
的统计信息,计算出一个与执行计划相关的开销。最后,选中最低开销的执行计划。简单来说,查询优化器通过探索搜索空间来寻找最有效的
执行计划
(6) 将子游标保存到库缓存  --  首先分配内存,然后将共享子游标存储进去,最后将它与父游标关联,与子游标有关的关键
内容是执行计划和执行环境,一旦保存到库缓存,父游标与子游标就可以分别通过视图v$sqlarea和v$sql被具体化。






如果是这样的,那么上面的1~6 的顺序,和韩思捷的 <<教你如何称为10g OCP>>中第五章的硬解析的步骤顺序不一样。
其中 :

1.  检查文法,  若有问题,退出解析
2.  检查对象和列是否存在,  若有问题,退出解析
3.  将对象进行名称转换,比如同义词转换为实际的对象,  若有问题,退出解析  
4.  检查对象的权限 ,  若有问题,退出解析
.......

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14696313