MySQL语句的执行过程(待更新)

概述

在这里插入图片描述

  1. 客户端一般会使用长连接连接到数据库服务器,当执行SQL语句时
  2. 先通过连接器进行权限校验,校验通过则会查询缓存(MySQL 8已移除缓存),缓存的数据结构为key-value,key为SQL语句,value为SQL语句执行结果;如果命中缓存则直接返回结果,否则进入分析器
  3. 分析器会先进行词法分析,确认关键字,表名,字段名,再进行语法分析,判断是否为合法的SQL语句;如果表或字段不存在,或者SQL不合法则抛出异常,正常则进入优化器
  4. 优化器会根据情况为当前查询选择最优的执行方案(不过有时候会选择错索引,可以通过force index来强制指定索引)
  5. 当确定最终执行方案时,执行器会指定具体的操作;例如查询语句:
    5.1.调用存储引擎接口取要查询表的第一行,判断条件是否满足,如果满足则将这行存入结果集中,如果不满足则跳过;
    5.2. 调用存储引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行
    5.3. 执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端

有索引的表,思路类似,获取“下一行”是返回索引的下一行

详情

连接器

缓存

分析器

优化器

执行器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾析编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值