一条SQL在MySQL中是如何执行的

一条SQL在MySQL中是如何执行的

MySQL内部结构

在这里插入图片描述

  • 连接器:进行权限的认证,认证时,mysql会在连接器内划分一小块缓存空间,用来缓存用户的权限,因此,当在表中修改用户权限时,如果不重新连接,会发现权限是没有变化的。

  • 查询缓存:mysql的查询缓存默认是关闭的,对于一些不经常插入、更新的表可以开启缓存。但是此功能很鸡肋,在mysql8.0以后已经移除该功能,因为当我们费劲力气缓存数据后,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

  • 词法分析器:当我们sql有错误时,常常会收到“You have an error in your SQL syntax”的错误提醒,这就是词法分析器起到了作用。

  • 语法分析器:语法分析器会生成一个语法树,来规定sql语法的构成,例如select后面要跟fleids。

在这里插入图片描述

  • 优化器:优化器会帮我们优化sql,该走哪个索引,或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
    时候,决定各个表的连接顺序。
  • 执行器:开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如果有,调用引擎执行sql。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AmbitionsZoe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值