分类目录

链接

2012 年 1 月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > Oracle > 正文
游标的解析过程
Oracle 暂无评论 阅读(2,408)

游标的解析过程(产生shared cursor)
        解析过程:

A、包含vpd的约束条件:
SQL语句如果使用的表使用了行级安全控制,安全策略生成的约束条件添加到where子句中

B、语法、语义、访问权限检查:
检查SQL语句书写的正确性,对象存在性,用户的访问权限

C、父游标缓存:
将该游标(SQL语句)的文本进行哈希得到哈希值并在library cache寻找相同的哈希值,如不存在则生存父游标且保存在library cache
中,按顺序完成D-F步骤。如果此时存在父游标,则进一步判断是否存在子游标。若存在相同的子游标,则直接调用其子游标的执行计
划执行该SQL语句,否则转到步骤D进行逻辑优化

D、逻辑优化:
使用不同的转换技巧,生成语义上等同的新的SQL语句(SQL语句的改写),一旦该操作完成,则执行计划数量、搜索空间将会相应增长。
其主要目的未进行转换的情况下是寻找无法被考虑到的执行计划

E、物理优化:
为逻辑优化阶段的SQL语句产生执行计划,读取数据字典中的统计信息以及动态采样的统计信息,计算开销,开销最低的执行计划将被
选中。

F、子游标缓存:
分配内存,生成子游标(即最佳执行计划),与父游标关联。可以在v$sqlarea, v$sql得到具体游标信息,父子游标通过sql_id关联

对于仅仅完成步骤A与B的SQL语句即为软解析,否则即为硬解析

shared cursor与session cursor的关系以及软软解析
        关系:
一个session cursor只能对应一个shared cursor,而一个shared cursor却可能同时对应多个session cursor

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:游标的解析过程 | Bruce's Blog

发表评论

留言无头像?