select * from product where id=1;
MySQL 的基本逻辑架构示意图
MySQL 架构可以分为 Server层 和 存储引擎层 两层
Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接器、查询缓存、分析器(解析器)、预处理器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM、Memory 等多个存储引擎,不同的存储引擎共用一个 Server 层。现在最常用的存储引擎是 InnoDB,从 MySQL 5.5 版本开始, InnoDB 成为了 MySQL 的默认存储引擎。我们常说的索引数据结构,就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同,比如 InnoDB 支持索引类型是 B+树 ,且是默认使用,也就是说在数据表中创建的主键索引和二级索引默认使用的是 B+ 树索引。
在执行 create table 建表的时候,如果不指定引擎类型,默认使用的就是 InnoDB。不过,也可以通过指定存储引擎的类型来选择别的引擎,比如在 create table 语句中使用 engine=memory, 来指定使用内存引擎创建表。不同存储引擎的表数据存取方式不同,支持的功能也不同。
从图中不难看出,不同的存储引擎共用一个 Server层,从连接器到执行器的部分。先对每个组件的名字有个印象,接下来结合开头的那条 SQL 语句,走一遍整个执行流程,依次看下每个组件的作用。