MySQL基础架构 执行过程图
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
连接器:连接命令中的 mysql 是客户端工具,用来跟服务端建立连接。
查询缓存:当拿到一个请求的时候会先去查询缓存中查看之前是否执行过这条语句,之前执行的语句及其结果已key-value的结构缓存在内存中。不过不推荐使用,因为每次对表的更新都会把所有缓存清空,除非你是一张不常更新的静态表,如配置表这种。MySQL8.0直接把查询缓存给删除了。
分析器:做词法分析和语法分析,识别字符串和判断SQL语句是否满足MySQL语法。
优化器:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
执行器:调用存储引擎执行SQL,得到响应的结果,将结果返回给客户端。