带着这个问题,我们可以很好的了解MySQL内部的架构,所以这次我们就拆解一下MySQL内部的结构,看看内部里的每一个“零件”具体是负责做什么的。 MySQL执行流程是怎样的?
可以看到,mysql的结构共分为两层:Server层和存储引擎层,
- Server层负责建立连接,分析和执行SQL。 mysql大多数的核心功能模块都在这实现,主要包括连接器,查询缓存,解析器,预处理器,优化器,执行器。另外,所有的内置函数(如日期,时间,数学和加密函数等)和所有跨存储引擎的功能(如存储过程,触发器,视图等。)都在Server层实现。
- 存储引擎层负责数据的存储和提取。支持InnoDB,MyISAM,Memory等多个存储引擎,不同的存储引擎公用一个Server层。现在最常用的存储引擎是InnoDB,从MySQL 5.5 版本开始,InnoDB成为了MySQL的默认存储引擎。我们常说的索引数据结构,就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同,比如InnoDB 支持索引类型是B+树,且是默认使用,也就是说在数据表中创建的主键索引和二级索引默认使用的是B+树索引。