一条sql的执行过程

1、首先mysql5.7和之前版本中。

用户在服务器发送一条sql。这时在线程池中会创建一条线程去链接当前用户的sql命令。首先会查询缓存中是否有value值存在。因为在缓存中是以key-value的形成来存放上一条用户的查询结果。如果命中,则反手将value中的值返回到服务器。没有命中则走到分析器中,那么在此过程中主要分析sql要做什么。就是所谓的词法和语法分析。

何为词法分析:通俗易懂就是 当前sql中的关键字。比如select 、update 等等。

何为语法分析器:就是分析你的sql是否正确。

分析完之后就到了优化器:顾名思义在此过程中呢,主要对当前sql进行优化,比如索引等选择最优的一条执行。

执行器:排插式的引擎提供给我们选择,默认innoodb引擎,因为支持事务等,具体就不展开说说了,实现原理就是我们熟悉的B+树啦。(具体后面在说)

2、mysql5.7和之前版本和mysql8.0区别。

在8.0中去除了缓存这一操作。太。。。。。。鸡肋了。需要相当的严格。比如:

select * from user;

当我们去查询第一次时,会存入到我们缓存中,第二次查询会直接从缓存中拿取,毫无毛病!

但select *     from user;这样去查询就会被判定为不是同一sql,不会命中缓存,所以就8.0就直接去掉了。大小写也会哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值