服务端处理客户端请求

120 阅读1分钟

查询请求的执行过程

  • 可以简单地把MySQL服务器处理请求的过程简单分为server层和存储引擎层。在server层完成查询优化后,按照生成的执行计划调用底层存储引擎提供的接口(读取索引的第一条记录、读取索引的下一条记录、插入记录等接口)获取到数据后返回给客户端。
  • server层和存储引擎层交互,一般是以记录为单位。比如,执行select查询,server层根据执行计划向存储引擎层取一条记录,判断是否符合where条件;如果符合,发送到缓冲区,待缓冲区满后才真正发送到客户端,然后继续向存储引擎层索要下一条记录,以此类推。

image.png

  1. 连接管理
    每一个客户端连接都会分配一个线程。
  2. 解析与优化
  • 查询缓存:缓存查询请求和结果
  • 语法解析
  • 查询优化:对SQL进行优化,并生成执行计划。比如外连接转换为内连接、表达式简化、子查询转为连接
  1. 存储引擎