我们在使用 MySQL
的时候只是停留在表层我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL
内部的执行。下方是 MySQL
的基本架构示意图。
大体来说,
MySQl
分为 Server 层和存储引擎层Server 层主要包含:
连接器: 管理连接、权限验证
查询缓存: 命中则返回结果(8.0 之后删除这个过程)
分析器: (要做什么)词法分析、语法分析
优化器: (该怎么做)优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
执行器: 操做引擎,返回结果
Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL5.5.5 版本开始成为了默认存储引擎。