基于下面的逻辑架构图,可以大致熟悉mysql各个架构组件之间的协同工作关系
从这张图你可以获取到如下的信息:
(1)mysql架构大致上可以划分为四层。
(2)第一层,主要是不同客户端的连接。
(3)第二层,主要是处理客户端的连接。
(4)第三层,处理客户端的sql语句。
(5)第四层,存储引擎真实的执行sql语句。
查询缓存
在正式查询之前,服务器会检查查询缓存,如果能找到对应的查询,则不必进行查询解析,优化,执行等过程,直接返回缓存中的结果集。
解析器和预处理器
mysql的解析器会根据查询语句,构造出一个解析树,主要用于根据语法规则来验证语句是否正确,比如sql的关键字是否正确,关键字的顺序是否正确。
而预处理器主要是进一步校验,比如表名,字段名是否正确等。
查询优化器
查询优化器将解析树转化为查询计划,一般情况下,一条查询可以有很多种执行方式,最终返回相同的结果,优化器就是找到这其中最优的执行计划
执行计划
在完成解析和优化阶段后,mysql根据相应的执行计划去调用存储引擎层提供的相应接口来获取结果。