Oracle SQL执行过程

来源:互联网 发布:暗黑3 网络不稳 编辑:程序博客网 时间:2024/05/17 08:32

SQL执行分四步


一、parse(最耗资源)

    1. 从 shared pool-->library cache 中搜索。凡是执行过的 SQL 语句,Oracle会使用 HASH() 函数进行计算,产生一个很小的文本记录。如果第一次执行,则进入第二步

    2. 检查 SQL 语法、权限 等(权限信息 存放在 Oracle的数据字典 中)。Oracle先从 shared pool-->data dictionary cache 中搜索;若找不到,则从 数据文件(其存放于system表空间) 中读取,然后存放入  shared pool-->data dictionary cache 以便共享

    3. 分析过程中,对访问到的表进行 锁操作,目的是为了保护表的结构不被修改

    4. Oracle优化器 会根据数据的存储结构(表的存储结构、索引)统计信息等,计算各种读取的代价,选择一条代价最佳的路径(代价最小),生成执行计划,同时编译并存储在 shared pool-->library cache 中

二、bind

Oracle对这两条语句是否被共享,要求非常严格,两条语句必须 完全一致
下面两条语句不会被share
-- 不会被shareselect ename, job from emp where empno=7788;select ename, job from emp where empno=7789;
写成参数形式,传入 7788, 7799,这样就可以共享下面的 SQL 啦
select ename, job from emp where empno=&employee_num;

三、execute

先从 数据缓冲区 查找数据,如果没有,再从 数据文件中 读取数据到 数据缓冲区,保存以便共享

四、fectch

把结果返回给用户


原创粉丝点击