MySQL中一条sql语句的大体执行流程

本文深入探讨了MySQL的内部架构,包括连接器、查询缓存、分析器、优化器和执行器的角色。连接器负责用户身份验证和权限检查,长连接与短连接影响资源消耗。查询缓存在MySQL 8.0后已被移除。分析器通过词法和语法分析理解SQL语句,优化器选择最佳执行计划,执行器执行SQL并处理权限验证。存储引擎如InnoDB处理数据的读写。

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

目录

简单架构

连接器

长连接与短连接

查询缓存

分析器

词法分析

语法分析

优化器

执行器


简单架构

图中可以看出MySQL主要分为Server层和存储引擎层,其中server层主要包括连接器、查询缓存、分析器、优化器以及执行器等结构,在这些结构中提供了MySQL大多数核心功能,比如存储过程、触发器、视图、函数等,以及所有跨存储引擎层的功能的实现。

存储引擎主要负责数据的存储和读取,提供了多个存储引擎,最常用的如InnoDB、MyISAM等,其中MySQL5.5之后InnoDB成为了默认的存储引擎,不用手动指定。

连接器

操作数据库的第一步就是与数据库建立连接,连接器的作用就进行用户身份验证,包括用户名密码以及用户权限等。用户名和密码验证通过之后,连接会去权限表中查询该用户的权限,此后所有的权限逻辑判断都会用到此时读取的权限信息,也就是说只要连接不断开,就算管理员修改了该用户的权限,该用户也不会受到影响。也就是说修改了某个用户的权限后,需要重新登录才会起作用。

不过当客户端一段时间没有操作后,连接是会断开的,可以通过配置文件的中wait_timeout参数来进行控制,默认是8小时

长连接与短连接

数据库中,长连接就是简历连接后,如果客户端有持续的请求,一直使用同一个连接,短连接是指每次执行完很少的请求后就会断开连接从新建立请求

查询缓存

建立连接后,执行查询语句的时候,会先从缓存中进行查询,如果有直接返回结果,如果没有就会执行下面的操作,完成后也会把结果缓存起来。

MySQL中如果对于经常更新的语句,缓存的有效时间太短,因为只要是对数据进行了更新,之前的缓存就会失效,对于只查询的数据进行缓存还是可以的。不过,MySQL8之后删除了缓存功能。

分析器

分析器主要是分析sql语句是做什么的,包括词法分析和语法分析。

词法分析

一条sql包含多个字符串组成,词法分析就是提取关键字,如select、表名、字段名、查询条件等,做完这些就可以进入语法分析了。

语法分析

主要判断输入的sql是否正确,是否符合MySQL的语法。

优化器

分析器操作完之后就会进入优化器,优化器的作用就是用最优的方案去执行sql,比如决定索引的选择和join的连接顺序等。

执行器

选择执行方案后,MySQL就可以对sql语句执行了,执行之前,还要验证一下用户是都对该表有操作权限,没有就报错返回,有操作权限就去调用存储引擎的接口,返回存储引擎返回的结果集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尚振伟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值