目录 一、MySQL技术架构 二、执行流程 1.连接器 2.查询缓存 3.解析SQL 4.执行SQL 总结 一、MySQL技术架构 可以看到,Mysql的技术架构共分为两层:Server层和存储引擎层 Server 层负责建立连接、分
目录
可以看到,Mysql的技术架构共分为两层:Server层和存储引擎层
Server 层负责建立连接、分析和执行 SQL。
存储引擎层负责数据的存储和提取。
在 linux 操作系统里要使用 mysql,第一步肯定是要先连接 Mysql 服务。
建立连接后,就可以对收到的SQL语句进行解析,判断语句属于什么类型。
2.1 如果是select语句,MySQL就会先去查询缓存里查找缓存数据,如果缓存数据存在,那么就会直接返回查询结果给客户端,否则就要往下执行,等执行完后,将查询的结果存入查询缓存中。查询缓存是以 key-value 形式保存在内存中的,key 为 SQL 查询语句,value 为 SQL 语句查询的结果。
2.2对于非查询语句,MySQL 5.7版本不会再走查询缓存的机制,每次执行都会直接操作数据库,而不会尝试从缓存中获取结果。
3.1词法分析。MySQL 会根据你输入的字符串识别出关键字出来,构建出 SQL 语法树,这样方便后面模块获取 SQL 类型、表名、字段名、 where 条件等等。
3.2语法分析。根据词法分析的结果,语法解析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。
每条SELECT 查询语句的执行流程主要可以分为下面这三个阶段:
预处理器:①检查SQL查询语句中的表或者字段是否存在;②将select * 中的 * 扩展为表中的各个列;
优化器(主要负责将 SQL 查询语句的执行方案确定下来,不同执行计划的执行效率不同):使用explain命令查看SQL语句的执行计划,执行计划中的key就表示执行过程中使用了哪个索引
执行器(真正开始执行SQL语句):以主键索引查询为例
select * from product where id = 1;
这条查询语句的查询条件用到了主键索引,而且是等值查询,同时主键 id 是唯一,不会有 id 相同的记录,所以优化器决定选用访问类型为 const 进行查询,也就是使用主键索引查询一条记录,那么执行器与存储引擎的执行流程是这样的:
执行器第一次查询,会调用 read_first_record 函数指针指向的函数,因为优化器选择的访问类型为 const,这个函数指针被指向为 InnoDB 引擎索引查询的接口,把条件 id = 1 交给存储引擎,让存储引擎定位符合条件的第一条记录。
执行一条 SQL 查询语句,期间发生了什么?
来源地址:https://blog.csdn.net/weixin_57607868/article/details/131237945
--结束END--
本文标题: 一文搞懂MySQL执行流程
本文链接: https://www.lsjlt.com/news/492540.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0