MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

本文详细介绍了当执行一条`SELECT`语句时,MySQL内部的执行流程,包括连接器、查询缓存、解析器、优化器和执行器的工作原理。通过实例解释了如何处理查询、优化查询路径以及权限验证。文章还讨论了长连接和短连接的差异,以及如何管理长连接。此外,提到了MySQL查询缓存的优缺点,以及在8.0版本中被移除的事实。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:当执行一条 select 语句时,MySQL 到底做了啥?

也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务。

就算重启成功了,对于问题的原因仍不知所以。

本文开始,记录学习《MySQL实战45讲》专栏的过程。

也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗?

是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分。

我知道关注公众号的小伙伴也有很多购买了这个专栏的,我希望大家都能够利用好这个机会,把 MySQL 吃透!

看大家的反馈情况吧,若有需要,可以建个小群,大家互相讨论学习!

下面开始正文。

大家或多或少都用过 MySQL,起码 select 还是会用的吧,但是 select 执行后,MySQL 内部到底发生了什么,你知道吗?

比如,我们有个简单的表 T,它有个 ID 字段,那么我们可以执行下面的语句:

mysql> select * from T where ID=10;

语句执行很简单,但是具体到 MySQL 内部,其实是一个完整的执行流程。

MySQL 的基本架构

从下图就可以清楚地看出 MySQL 的命令执行流程:

MySQL 的基本架构

从该图可以看出,MySQL 主要分为 server 层和存储引擎层。

  • server 层中包含连接器,查询缓存,分析器,优化器,执行器,大多数核心功能以及内置函数,存储过程,触发器,视图等。
  • 存储引擎层主要负责最终数据的存储和提取,例如常用的存储引擎 InnoDB、MyISAM 等。

好了,下面开始梳理一次完整的查询流程。

MySQL 执行流程

1 连接

首先通过连接器连接到数据库。

连接器的主要作用是建立连接,获取用户权限,维持连接,管理连接

连接的一般命令就是我们常用的登陆数据库的命令:

mysql -u$username -h$host -p$port -P

命令执行后,若用户名或者密码不对,或者数据库做了登录 ip 限制,都会收到异常信息。

若登陆成功,那么就代表连接成功建立。

之后连接器会维持当前连接,接下来连接器会查询出该用户的权限,后面所

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值