msyql分为server曾和存储引擎层

server层包括了连接器(管理连接,权限验证)、查询缓存(命中直接返回结果)、分析器(词法分析,语法分析)、优化器(执行计划生成,索引选择)、执行器(操作引擎,返回结果)等,涵盖了Mysql大多数核心功能,以及所有的内置函数(日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等

存储引擎层负责数据的存储和提取。架构模式是插件式的,支持innoDB、MyISAM、Memory等多个存储引擎。

比如一个语句是

select * from T where id=10;

首先,我们需要建立连接,这个时候是经历连接器,管理连接,权限认证;

第二步是:查询缓存,如果命中直接返回,mysql 8.0取消了此模块(生效频繁)

第三步是: 分析器,进行词法分析和语法分析,识别sql语句中的字符串代表的是什么,然后判断是否符合msyql的语法;

第三步是: 优化器,在表中有多个索引的时候,决定使用哪个索引;或者是在一个语句进行多表(Join)的时候,决定各个表的连接顺序;

第四步是: 执行器,判断有没有对表的执行查询的权限,有权限的话会从第一行寻找ID=10的数据,一直找到;