请教SQL具体执行过程
当用户发布一条SQL或者PL/SQL语句时,这条语句具体的执行流程时怎样的,有那位高手能描述一下吗? 难道没有人愿意描述,本人理解如下,不知道正确否:当一个Oracle实例发布一条sql或者pl/sql语句后
1、oracle把该语句中字符转换成ASCII等效数字码
2、该ASCII码字符串被传递一个散列算法,同时,该算法产生一个散列值
3、Server Process 察看该散列值在共享池中是否已经存在,如果存在,就使用该语句的高速缓存版本
4、如果该散列值不存在,就进行语法分析
具体步骤
a、检查该语句语义正确性
b、执行对象解析,其间对照数据目录检查被引用对象的名称和结构
c、通过检查数据目录来收集与该语句中所引用的各对象有关的统计数据
d、准备从可用的执行计划中选择一个执行计划,其中包括存储大纲或物化视图相
关的决定
e、通过检查数据目录来确定该语句中所引用的那些对象的安全性
f、生成该语句的编译代码(p-code)
5、生成该语句。。。,并缓存该语句在shared pool中
6、执行该语句
5,6不知道怎么写了,请大家补充 当一个Oracle实例接收一条sql后
1、Create a Cursor 创建游标
2、Parse the Statement 分析语句
3、Describe Results of a Query 描述查询的结果集
4、Define Output of a Query 定义查询的输出数据
5、Bind Any Variables 绑定变量
6、Parallelize the Statement 并行执行语句
7、Run the Statement 运行语句
8、Fetch Rows of a Query 取查询出来的行
9、Close the Cursor 关闭游标
页:
[1]