Mysql架构讲解
一、从一条查询语句的执行顺序来看mysql架构的组件

二、逐个分析一下每一个组件
1、查询缓存
Mysql的缓存机制比较苛刻,每一次查询的语句必须一摸一样才可以调取到缓存的数据,多一个空格也是不可以的。而且,表里面的任何一条数据发生变化,缓存都会失效,对于频繁更新的表来说不合适。推荐使用ORM框架进行缓存,或者是直接使用独立的缓存服务,比如:redis
Mysql8.0中已经将mysql的缓存机制移除,所以可以看出它的可用性。
2、解析器
分为词法解析和语法解析
(1)、词法解析:
就是把一个简单的sql打碎成一个个单词,判断每个符号是什么类型,从哪里开始那里结束。
(2)、语法解析
对sql进行一些语法的检查,比如单引号有没有闭合,根据语法规则,根据sql语句生成一个数据结构,我们把它叫做解析树。
比如语句 select name from user where user_id = 1;
它的解析树如下:

3、预处理器
主要用于语义解析:
如果写了一个语法完全正确的树,但是表或者字段不存在,还是在解析的时候报错,因为解析器处理之后,还有一个预处理器,它用来判断解析树的语义是否正确,也就是表名和字段名是否存在。预处理后生成一个新的解析树。
4、查询优化和查询执行计划
查询优化器根据解析树生成不同的执行计划,然后选择出来最优的一种执行计划。
比如多表联合查询选择拿一张表作为基准,有多个索引时选择使用哪个索引,移除1=1的恒等式等等。优化器最终会把解析树变成一个执行计划,执行计划也

本文详细介绍了Mysql的架构,包括查询缓存、解析器、预处理器、查询优化器和存储引擎的功能。预处理器负责语义解析,确保表和字段存在。Mysql的存储引擎如InnoDB支持事务和行级锁,提高并发性能。此外,文章还讨论了常用存储引擎的特点,如MyISAM、InnoDB、Memory和Archive。
最低0.47元/天 解锁文章
682

被折叠的 条评论
为什么被折叠?



