mysql分为Server层和存储引擎层
Server层
涵盖了大多数mysql的核心服务功能,以及所有内置的函数(例如日期、加密、数学等函数),所有跨存储引擎的操作都在Server层实现:存储过程、触发器、视图等
- 连接器
- 连接器主要负责建立连接、进行权限验证、维持和管理连接,
- 连接完成后,如果没有后续操作,这个链接就处于空闲状态(sleep)
- 查询缓存
- Mysql拿到一个查询请求后,会去看之前执行过的以key-value对形式缓存在内存中的执行结果,key就是执行语句,value就是执行结果
- 如果存在缓存,就直接返回,不存在会继续执行后面的操作
- 不建议使用
- 只要对表进行更新,那么这个表的所有缓存结果都会被清空
- mysql 8.0之后就不再支持查询缓存
- 分析器
- 词法分析,识别sql语句要进行的操作、用到的表和字符串
- 语法分析,判断sql语句是否满足mysql的语法规则
- 优化器
- 决定使用什么样的索引,如果是连表查询的话要判断连接表的顺序
- 执行器
- 判断对要操作的表有没有操作权限(读和写)
- 通过存储引擎的接口,取出所需要的结果数据
存储引擎层
负责数据的存储和提取,架构模式是插件式的。支持InnoDb、MyIsam等,从mysql5.5.5版本后,InnoDB开始成为了Mysql默认的存储引擎