Oracle SQL执行过程

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
-- 不会被share
select 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

把结果返回给用户


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值