栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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以后)查询缓存模块被删除了。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号