上一篇:《第8章-1 查询性能优化-优化数据访问》,接着来了解查询执行的过程,这个对sql执行有个更直观的了解。
查询执行的基础
当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行。
在这里,是时候回头看看我们前面讨论的内容了:MySQL执行一个查询的过程。根据图8-1可以看到,当向MySQL发送一个请求的时候,MySQL到底做了些什么:
1,客户端给服务器发送一条SQL查询语句。
2,服务器端进行SQL语句解析、预处理,再由优化器生成对应的执行计划。
3,MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询。
4,将结果返回给客户端。
8-1:查询执行路径
上面的每一步都比想象的要复杂,我们在后续章节中将继续讨论。我们会看到,在每一个阶段,查询处于何种状态。查询优化器是其中特别复杂也特别难理解的部分。还有很多的例外情况,例如,当查询使用绑定变量后,执行路径会有所不同,我们将在下一章讨论这点。
MySQL 主要分为 Server 层和引擎层,Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。
查询语句的执行流程如下:权限校验(如果命中缓存)--->查询缓存(mysql8.0后就废弃了)--->分析器--->优化器--->权限校验--->执行器--->引擎
上一篇:《第8章-1 查询性能优化-优化数据访问》
下一篇:《第8章-3 查询性能优化1》