查询请求的执行过程
- 可以简单地把MySQL服务器处理请求的过程简单分为server层和存储引擎层。在server层完成查询优化后,按照生成的执行计划调用底层存储引擎提供的接口(读取索引的第一条记录、读取索引的下一条记录、插入记录等接口)获取到数据后返回给客户端。
- server层和存储引擎层交互,一般是以记录为单位。比如,执行select查询,server层根据执行计划向存储引擎层取一条记录,判断是否符合where条件;如果符合,发送到缓冲区,待缓冲区满后才真正发送到客户端,然后继续向存储引擎层索要下一条记录,以此类推。
- 连接管理
每一个客户端连接都会分配一个线程。 - 解析与优化
- 查询缓存:缓存查询请求和结果
- 语法解析
- 查询优化:对SQL进行优化,并生成执行计划。比如外连接转换为内连接、表达式简化、子查询转为连接
- 存储引擎