一、MySQL查询时的简要执行过程

  • 连接器
  • 查询缓存
  • 解析器
  • 预处理
  • 优化器
  • 执行器

二、连接器

  • TCP 三次握手;
  • 校验用户的账号密码;
  • 根据用户分配权限,对用户修改权限不影响当前会话;

三、查询缓存

查询缓存(Query Cache)以 key-value 键值对的形式存储。key 就是 SQL 语句,必须完全对应。同时如果对数据表内的一条数据进行更新,就会导致整张表的查询缓存失效。

8.0 以后的版本就默认删除了查询缓存功能。

四、解析SQL

解析器来处理这件事情,分为 词法分析语法分析,依次来执行。

词法分析

提取关键字

语法分析

根据语法规则,判断语句是否合规,最后构建生成语法树

五、执行SQL

1.预处理器

  • 检查表字段是否存在;
  • * 展开

2.优化器

根据查询的 SQL 语句,确定执行计划,确定使用什么索引来查询数据。

3.执行器

  • 主键索引;

  • 全表扫描;

  • 索引下推

    利用联合索引,将 Server 层负责处理的事情交给引擎层处理完成,减少回表操作。

查询语句执行流程

文章目录