news 2026/9/11 10:56:00

MySQL 中一条查询 SQL 是执行流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 中一条查询 SQL 是执行流程

开发过程中经常使用mysql,比如进行记录查询。不过很多人不清楚类似,"select age from t_person where id=1" 是怎样执行的。下面为大家一起解剖这个问题。

一、mysql的架构

如上图,mysql分为Server层和存储引擎层。server层包括了mysql的大多数的核心服务、全部的内置函数以及跨存储引擎的功能(存储过程、触发器、视图)。而存储引擎层,则主要负责数据的存储以及提取,架构模式是插件式的(InnoDB、MyISAM等等),常用的是InnoDB这种存储引擎。

二、查询语句的执行流程

1、取得连接

使用mysql的连接器。连接器用于与客户端建立连接、获取用户权限、维持和管理连接。获取到权限后,在本次连接过程中,权限是不会被改变。

2、查询缓存

mysql接收到一个查询请求后,会先到查询缓存。key 为 SQL 语句,value 为查询结果,如果查到就直接返回。

不建议使用缓存,在 MySQL 8.0 版本已经将查询缓存删除,也就是说 MySQL 8.0 版本后不存在此功能。

3、分析器

分为词法分析和语法分析。此阶段只是做一些 SQL 解析,语法校验。所以一般语法错误在此阶段。此阶段是要干什么。

4、优化器

当表里有多个索引的时候,决定使用哪个索引;或者一个语句中存在多表关联的时候(join),决定各个表的连接顺序。此阶段确定该怎么做。

5、 执行器

开始执行语句。执行语句的时候还要判断是否具备此权限,没有权限就直接返回提示没有权限的错误;有权限则打开表,根据表的引擎定义,去使用这个引擎提供的接口,获取这个表的第一行,判断 id 是都等于 1。如果是,直接返回;如果不是继续调用引擎接口去下一行,重复相同的判断,直到取到这个表的最后一行,最后返回。

三、总结

一条简单的sql在MYSQL服务中需要完成上述五步才能正常得到结果。当中查询缓存这步骤,因其失效频繁(只要相关的表有更新,就会缓存记录就会被清空),因此不建议使用,甚至高版本的(8.0以后)查询缓存模块被删除了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 10:54:51

OFDM信道估计:LS与MMSE算法对比及MATLAB仿真

简介:正交频分复用(OFDM)是现代无线通信的核心技术之一,信道估计的准确性直接影响接收端均衡与解调性能。这份MATLAB仿真源码围绕OFDM系统的信道估计问题,面向通信工程专业学生、科研人员以及无线物理层算法爱好者&…

作者头像 李华
网站建设 2026/9/11 10:54:07

信号与系统1-概述

目录: 一、概述 1、信号与系统概念 2、信号描述、分类与典型信号 3、信号的运算 4-1、阶跃信号与冲激信号 4-2、单位脉冲与单位阶跃序列 5、信号的分解 6、系统概念及其分类 下续:信号与系统2-连续离散系统时域分析 一、概述 1、信号与系统概念 …

作者头像 李华
网站建设 2026/9/11 10:51:43

PCA人脸识别实战:从特征脸原理到OpenCV实时部署

简介:本资源是一份面向高校计算机、人工智能或模式识别课程学生的PCA人脸识别算法实践项目,聚焦原理讲解与Python代码实现,适用于期末大作业、课程设计及零基础入门实战。压缩包共8个文件,含6张实验结果可视化图(如不同…

作者头像 李华
网站建设 2026/9/11 10:48:28

企业知识库管理系统怎么选?从AI搜索到权限合规的完全选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华