总的来说,MySQL逻辑架构可以分为server层和存储引擎层这两个部分。这篇文章记录的是SQL语句执行流程,主要是发生在server层上面的事。
server层主要包括了MySQL数据库大多数的功能,毕竟执行SQL大部分是在这一层去实现的嘛^_^。这一层细分下来可以分为:查询缓存(query cache 有的简称QC),解析器也可叫分析器,预处理器(其实也可以归在分析器里面),查询优化器等。
存储引擎层主要的工作是存储、提取数据。当前主要的存储引擎种类有:InnoDB,MyISAM,tokuDB等,他们的区别如下:
在InnoDB和MyISAM这两种存储引擎中,当前使用较广的是InnoDB,MyISAM由于不支持事务,不支持行锁等原因在8.0版本后已经被彻底废弃了。从MySQL5.5版本开始,InnoDB成为MySQL数据库默认的存储引擎。
先说结论吧,一条SQL语句从客户端发起后,到MySQL数据库,先会进行一系列验证(比如查询/更新权限),接着到查询缓存,再到解析器,查询优化器,完成执行语句的操作从存储引擎中调取结果返回给客户端。
一、连接&&验证权限
MySQL的连接主要有两种方式,一种是从服务器本地发起的,通过root用户,使用socket登录,还有一种是我们从客户端发起的属于远程连接,一般来说远程连接数据库通常需要输入的几个要素:用户名、密码、端口号、IP地址。
连接首先验证的是密码是否正确,当前用户在当前IP是否有权限登录等,登录完成后,该登录用户会具有当前已分配给他的权限(增删改查等)。
二、查询缓存
上一步的验证完成后,SQL执行就会来到查询缓存(query cache),看是否有执行过该SQL语句缓存有该SQL执行结果,如果有,直接取出结果返回给客户端,如果没有则进行下一步的查询。
不可否认,如果每次都能在查询缓存中获取数据,这个效率是很高的。但是对于
实际应用中,并不建议使用查询缓存。
因为查询缓存只能针对静态数据不能针对动态数据,很可能好不容易缓存好的数据,其中有表发生了更新,一下子缓存好的数据就被清掉了。而在8.0版本后,这功能也被彻底废弃了,在8.0之前的版本一般是建议关闭查询缓存功能的。
三、解析器
在第二步的查询缓存中没能获取或者说没能命中查询缓存,就会首先进行SQL解析,包含语法,语义解析:是要进行查询还是更新操作,
语句写的有没问题
之类的,生成一个解析树,提交给下一步。
四、预处理器(其实也可以归在解析器里面)
将第三步中解析过的解析树进行预处理,相对于第三部来说会进行更深层次的判断,比如
表/列是否存在之类的,会把解析树处理为更为平衡的平衡树结构。
五、查询优化器
预处理完成后,来到查询优化器,这里决定了比如走哪个索引等,转化前面的平衡树为执行计划,并选出一个数据库认为是最优的执行计划进行SQL的执行。
六、SQL执行
从存储引擎层调取需要的数据,返回给客户端,至此,流程结束。
小C的MySQL学习笔记(三):SQL语句的执行流程是怎么样的呢?
来源:这里教程网
时间:2026-03-01 11:55:35
作者:
编辑推荐:
- 小C的MySQL学习笔记(三):SQL语句的执行流程是怎么样的呢?03-01
- 小C的MySQL学习笔记(二):MySQL忘记密码不用慌03-01
- DBeaver5.0.5链接mysql03-01
- Mysql5.7半同步复制03-01
- MYSQL order by排序导致效率低小优化03-01
- MYSQL搭建03-01
- MySQL每秒57万的写入,快还是慢?03-01
- 重做日志与二进制日志03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 小C的MySQL学习笔记(三):SQL语句的执行流程是怎么样的呢?
小C的MySQL学习笔记(三):SQL语句的执行流程是怎么样的呢?
26-03-01 - DBeaver5.0.5链接mysql
DBeaver5.0.5链接mysql
26-03-01 - MYSQL order by排序导致效率低小优化
MYSQL order by排序导致效率低小优化
26-03-01 - MySQL每秒57万的写入,快还是慢?
MySQL每秒57万的写入,快还是慢?
26-03-01 - 重做日志与二进制日志
重做日志与二进制日志
26-03-01 - MySQL 体系结构
MySQL 体系结构
26-03-01 - CentOS权限问题排查(手把手教你解决Linux文件与目录访问权限错误)
- MySQL高可用架构之MHA 原理与实践
MySQL高可用架构之MHA 原理与实践
26-03-01 - 老司机也必须掌握的MySQL优化指南
老司机也必须掌握的MySQL优化指南
26-03-01 - Oracle 认证下载
Oracle 认证下载
26-03-01
