Mysql和Oracle数据库sql执行过程的区别

Mysql

客户提交一条语句
现在查询缓存查看是否存在对应的缓存数据,如有则直接返回(一般有的可能性极小,因此一般建议关闭查询缓存)。
交给解析器处理,解析器会将提交的语句生成一个解析树。
预处理器会处理解析树,形成新的解析树。这一阶段存在一些SQL改写的过程。
改写后的解析树提交给查询优化器。查询优化器生成执行计划。
执行计划交由执行引擎调用存储引擎接口,完成执行过程。这里要注意,MySQL的Server层和Engine层是分离的。
最终的结果有执行引擎返回给客户端,如果开启查询缓存的话,则会缓存。


Oracle

用户提交了一条SQL语句
数据库按照SQL语句的字面值计算出一个HASH值
根据HASH值,判断一下在数据库缓冲区中是否存在此SQL的执行计划。
如果不存在,则需要生成一个执行计划(硬解析过程),然后将结果存入缓冲区。
如果存在的话,判断是否为相同SQL(同样HASH值的语句,可能字符不相同;即使完全相同,也可能代表不同的语句。这块不展开说了)
确认是同一条SQL语句,则从缓冲区中取出执行计划。
将执行计划,交给执行器执行。
结果返回给客户端。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值