大体架构组件如上图所示,主要分为 客户端,服务层,存储引擎3层:
- 客户端:负责将 SQL 命令发送到Mysql服务器,并接受服务器的响应。
- 查询缓存:只要一个表有更新,那么该表上所有的查询缓存都会被清空,因此查询缓存失效比较频繁,特别是对于更新频繁的表来说,查询缓存命中的效率非常低。基于这个原因,在 mysql8.0 已经将查询缓存功能删除了。
- 存储引擎:存储引擎支持多种存储引擎,在mysql 5.6 版本之后,InnoDB 成为默认存储引擎。
select * from tableName where id = 1
以上面的SQL语句为例,假设id字段没有索引,那么执行器的流程大概如下:
- 调用InnoDB引擎获取表的第一行,判断id是否为1,如果不是则跳过,如果是则将这行结果存到结果集中;
- 调用引擎取下一行,重复第一步的判断逻辑,直到取完该表的最后一行;
- 执行器将所有满足条件的行记录组成结果集,返回给客户端。