https://dev.mysql.com/doc/refman/8.4/en
MySQL 是一个关系型数据库,My 是其主要作者 Michael Widenius 女儿的名字。MariaDB是MySQL的分叉。

[!IMPORTANT]
MySQL 5.6 及以前查询缓存机制默认启用,5.7 中查询缓存机制默认禁用,8.x 及以后查询缓存机制被移除。

连接层:客户端的连接,认证,授权
服务层:SQL的接口、优化,跨引擎
引擎层:引擎不同索引结构不同
存储层:物理文件
我们知道MySQL其实是分成server层和存储引擎层两部分,每当执行一个查询时,server层负责生成执行计划,即选取即将使用的索引以及对应的扫描区间。我们这里以InnoDB为例,针对每一个扫描区间,都会:
- server层向InnoDB要扫描区间的第1条记录
- InnoDB通过B+树定位到扫描区间的第1条记录(如果定位的是二级索引记录并有回表需求则回表获取完整的聚簇索引记录),然后返回给server层
- server层判断记录是否符合搜索条件,如果符合则发送给客户端,不符合则跳过。继续向InnoDB要下一条记录。