image.png连接器会监听客户端发来的连接请求,把客户端的指令转发给缓存。

查询缓存

  • 之前执行过的语句会以KV的形式缓存在内存中
  • 查询之前先查找之前执行过的相同语句
  • 不推荐使用缓存:数据表修改后,会删除所有相关缓存
  • MySQL8.0之后就把缓存给去掉了

这个粒度相当大,这个操作不是行相关的,而是表相关的

分析器

  • 分析器的作用是知道你要“干什么”
  • 先做词法分析,识别SQL语句中的关键字
  • 再做句法分析,判断SQL语句是否符合语法

    优化器

  • 优化器的作用是要知道“怎么做”

  • 优化器的主要工作室决定如何使用索引

    执行器

  • 执行器的主要工作是校验权限、调用存储引擎

  • 执行器首先校验此用户对目标数据有无权限
  • 执行器会以行为粒度,调用存储引擎,执行SQL
  • 在没有索引的情况下,执行器会循环查询所有行

    存储引擎

  • 存储引擎的任务是将执行器的指令落实在数据文件上

  • 不同存储引擎的原理和执行方法有很大不同

    总结

  • SQL语句执行的过程涉及到了MySQL几乎所有的模块

  • 一个SQL语句是按照 分析—优化—执行—落盘的步骤执行的
  • MySQL 8.0之后已经停用了缓存功能
  • 不同存储引擎的执行方法不通