MySQL第1讲 一条SQL查询语句是如何执行的?【简述】

MySQL剖析第一讲

1. 一条SQL查询语句是如何执行的?

大致如图所示:
sql查询语句执行过程

连接器:

连接到数据库,用于客户端跟服务端建立连接,完成TCP三次握手之后,需要验证身份和用户权限,此时读到的权限会用于此连接所有的增删改查,在建立连接之后再修改用户权限并不会影响此次连接的权限。

查询缓存:(可选

(可选,如果命中直接返回,不建议使用缓存,因为查询缓存的失效非常频繁)

分析器解析SQL语句,词法分析和语法分析:

如果没有命中缓存,就到达分析器,分析器会对SQL语句进行解析,包括“词法分析”和“语法分析”。“词法分析”需要对SQL语句的字符串进行识别,识别出每个字符串代表什么意思,比如“select"表示这是一个查询语句,以及表名和列名的识别。然后进行“词法分析”,也就是根据语法规则判断SQL语句是否满足MySQL语法。

优化器决定执行方案:

经过分析器后MySQL知道了这次的SQL要做什么,在执行之前需要经过优化器的处理。优化器是决定使用什么样执行方法可以使执行的效率更高效。比如有多个索引时决定使用哪个索引,或者多表关联时决定表的连接顺序。

执行器调用引擎接口执行语句并判断有无权限:

通过分析器解析出SQL语句要干什么,通过优化器找出MySQL认为的最佳执行方案,进入执行阶段,先判断对对应的表有无查询的权限,如果有再继续执行,执行器调用引擎提供的接口,“取出满足条件的行,重复相同的判断逻辑,直到取到这个表的最后一行”,返回结果集。

存储引擎而存储引擎层负责数据的存储和提取提供读写接口
持续更新……

ps:以上内容参考极客时间mysql45讲,以及自己的一些理解,如有错漏之处欢迎指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值