Server层
- 查询缓存(8.0中已经没有了)
- 连接器
- 分析器
- 优化器
- 执行器
存储引擎层
存储引擎层
- 负责数据的存储和提取
- 其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB
连接器
- 连接器负责跟客户端建立连接、获取权限、维持和管理连接
- 连接命令
- mysql -hport -u$user -p
- 长连接和短连接
- 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接
- 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个
查询缓存
- 执行过的语句会以key value形式放入查询缓存
- 一般不使用(8.0后删除) 只要有对一个表的更新,这个表上所有的查询缓存都会被清空
分析器
- 对 SQL 语句做解析
- 词法分析 识别字符串代表什么 根据mysql的关键字进行验证和解析(select)
- 语法分析 判断是否满足Mysql语法 表名和字段名称的验证和解析
优化器
- 优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
- 比如mysql>select*fromt1joint2using(ID)wheret1.c=10 andt2.d=20;
- 既可以先从表 t1 里面取出 c=10 的记录的 ID 值,再根据 ID 值关联到表 t2,再判断 t2 里面 d 的值是否等于 20。
- 也可以先从表 t2 里面取出 d=20 的记录的 ID 值,再根据 ID 值关联到 t1,再判断 t1 里面 c 的值是否等于 10
执行器
- 执行语句
- 先判断有没有执行查询的权限
- 如果有就去调用引擎接口
- 遍历一个表判断id是否为查询id