1.先上图
如上图所示,MySQL分成server层和引擎层两层。
server层:连接器、分析器、优化器、执行器等,主要是对客户端的指令进行分析,优化,提取等操作
引擎层:主要是对数据进行存储和提取,目前的存储引擎包括:InnoDB、MyISAM、Memory等,其中InnoDB是目前常用的存储引擎,也是mysql的默认引擎
2.职责
连接器:主要是负责和客户端进行连接,长短连接,登录权限校验
查询缓存:判断之前是否执行过该语句,如果执行过了,则可以直接从缓存中获取返回即可,缓存存储方式为key-value,因此效率非常高
分析器:功能如其名,分析语句是否合法,查询数据字段是否有误等
优化器:对客户端请求的语句进行优化,根据优化后的语句进行判断是否走索引等操作
执行器:执行sql语句,从引擎层获取数据
引擎层:获取数据进行返回
3.执行流程
- 连接上mysql,校验账号密码,获取权限
- 查询缓存是否有数据,(8.0版本废弃,不建议使用,更新时会失效)
- 使用分析器分析语句
- 使用优化器优化语句以及决定是否有索引等
- 使用执行器执行语句
- 执行器调用引擎接口获取数据