Oracle的sql语句执行过程

--sql语句的执行过程
1.连接方式
2.查询语句的执行过程
    1)语句解析
        a)检查库缓存,有无执行过相同的sql语句
            没有,进入b)
            有,进入2)
        b)检查语法:关键字
        c)检查语义:表名,列名
        d)获得解析锁
        e)核对访问权限
        f)确定执行计划(explain plan)
        g)保存执行计划到缓存区
    2)语句执行
        a)检查缓存中有无数据块;
            没有:进入b)
            有:进入3)
        b)查询获取目标数据文件
    3)返回结果到客户端
3.DML的执行过程
    1)语句解析
        a)检查库缓存,有无执行过相同的sql语句
            没有,进入b)
            有,进入2)
        b)检查语法:关键字
        c)检查语义:表名,列名
        d)获得解析锁
        e)核对访问权限
        f)确定执行计划(explain plan)
        g)保存执行计划到缓存区
    2)语句执行
        a)检查缓存区有无要修改的数据
            没有:从数据文件装载到缓存
        b)在要修改的数据记录上加锁。防止在事务期间其他事务修改这些数据
        c)把旧数据放到undo segment中,新数据放在数据块对应的缓存中
    3)返回结果到客户端,返回影响的记录数
4.事务提交:commit
    1)redo log buffer.    scn
    2)LGWR启动,redo log buffer 写入到redo log files
    3)通知客户端事务已提交
    4)Oracle Server标示这个事务已完成
    其他:DBWR把脏数据写入数据文件,示范数据记录上的锁
5.事务回滚:rollback
    1)把undo segment中的数据写回
    2)释放undo segment中被占用的空间





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值