一、MySQL发送SQL请求执行流程 MySQL发送SQL请求执行流程.png
- 1、客户端发送一条给
- 2、MySQL服务器先检查 ,如果中存在待查询的结果数据,则会立刻返回查询缓存中的结果数据,否则执行下一阶段的处理
- 3、MySQL服务器通过 和 对SQL语句进行解析和预处理,并将生产的SQL语句解析树传递给
- 4、将进行进一步处理,生成对应的执行计划
- 5、MySQL服务器根据生成的执行计划,通过调用存储引擎的API来执行查询操作
- 6、查询数据库中的数据,并将结果返回给查询执行引擎
- 7、将结果保存在查询缓存中,并通过数据库连接/线程处理返回给客户端
1.1、查询缓存
MySQL内部的缓存区域,保存查询返回的完整结构,当查询命中缓存时,MySQL会立刻返回结果数据,不再执行后续的解析、优化和执行操作
1.2、解析器
能够通过SQL关键字和SQL语法规则对SQL语句进行解析,并生成对应的SQL语句解析树
1.3、预处理器
根据MySQL的相关规则,对解析器生成的SQL语句解析树进行进一步的校验,比如检查数据库中的数据表是否存在,数据表中的数据列是否存在。再比如,如果SQL语句中使用了别名,还会对别名进行校验,检查别名是否存在重名和歧义等
1.4、查询优化器
根据一定的规则将SQL语句解析树转化成查询性能最好的执行计划
1.5、查询执行引擎
根据查询优化器生成的执行计划完成整个数据查询的过程
网友评论