Mysql 之执行计划

背景

开发过程经常会遇到接口响应慢的问题,用户也会反馈页面卡顿,响应太慢,导致用户体验差,这个时候作为开发就要赶紧排查了,可能是程序处理的问题、也可能是并发量大导致排队问题、也可能是sql查询性能导致等;大多数时候sql查询缓慢是主要原因,下面我们聊下排查sql慢的思路。

技术简介

说到sql就要先了解下sql的架构图:

**客户端:**这里指连接MySQL各种形式,如.Net中使用的ADO连接、Java使用JDBC连接等,MySQL是客户端和服务器模式,前提先建立连接,才能传输数据,处理相关逻辑。

**业务逻辑:**在MySQL内部有很多模块组成,分别处理相关业务逻辑。

**连接管理:**负责连接认证、连接数判断、连接池处理等业务逻辑处理。

**查询缓存:**当一个SQL进来时,如果开启查询缓存功能,MySQL会优先去查询缓存,平时我们开发都会选择不开启。

**解析器:**对于一个sql语句,MySql根据语法规则需要对其进行解析,并生成一个内部能识别的解析树。

**优化器:**负责对解析器得到的解析树进行优化,MySQL会根据内部算法找到一个MySQL认为最优的执行计划,后续就按照这个执行计划执行。

**执行器:**得到执行计划之后,就会找到对应的存储引擎,根据执行计划给出的指令依次执行。

**存储引擎:**数据的存储和提取最后是靠存储引擎,平时我们使用最多的就是支持事务的InnoDb。

**物理文件:**数据存储的最终位置,即磁盘上,协同存储引擎对数据进行读写操作。

实现与效果

通过上面的逻辑我们知道一个sql发送到服务端时候要经过优化器,而使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql的即sql的执行计划。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL执行计划(Execution Plan),是指 MySQL 查询优化器生成的一个查询执行计划,用于指导 MySQL 如何执行查询语句并返回结果。执行计划可以帮助我们理解 MySQL 为什么选择某种查询方式,以及如何优化查询语句。 要查看 MySQL 执行计划,可以使用 `EXPLAIN` 命令。例如,要查看某个查询语句的执行计划,可以输入以下命令: ``` EXPLAIN SELECT * FROM mytable WHERE id = 1; ``` 执行该命令后,MySQL 会返回一个表格,其中包含了 MySQL 执行该查询语句的详细过程和执行计划。表格中的各个字段的含义如下: - id:查询的唯一标识符,每个查询都有一个唯一的标识符; - select_type:查询的类型,包括简单查询(SIMPLE)、联合查询(UNION)、子查询(SUBQUERY)等; - table:查询涉及的表的名称; - partitions:查询所涉及的分区; - type:访问类型,即 MySQL 如何访问表,包括全表扫描(ALL)、索引扫描(index)、范围扫描(range)等; - possible_keys:可能使用的索引列表; - key:实际使用的索引; - key_len:使用的索引的长度; - ref:与索引比较的列或常量; - rows:MySQL 预计要扫描的行数; - filtered:返回结果的过滤程度; - Extra:一些额外的信息,例如使用了哪个索引、使用了哪种算法等。 通过查看执行计划,我们可以了解 MySQL 在执行查询语句时的具体过程,从而进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值