一、Mysql执行查询流程

mysql执行查询的流程
mysql执行查询内部路程:1.客服端发送一条查询给服务器
2.服务器先检查查询缓存,如果命中缓存,立刻返回存储在缓存的结果,否则进入下一阶段。
3.服务器端进行sql解析,预处理,再由优化器生成对应的执行计划。
将一个SQL转换成一个执行计划,MySQL再依照这个执行计划和存储引擎进行交互,者包括多个子阶段,解析SQL,预处理,优化sql执行计划。
4.mysql根据优化器生成的执行计划,调用存储引擎的api来执行查询
5.将结果返回给客户端。
优化数据访问: 1、只查询需要的记录,如使用limit等
2、多表关联时不要返回全部列
3、查询不取出全部列
4、不要重复查询相同的数据:不断重复执行相同的查询,然后每次都返回相同的数据,比较好的方案是,当初次查询的时候将这个数据缓存起来,需要的时候从缓存中取出。
对于MySQl,最简单的衡量查询开销的三个指标如下:
响应时间
扫描的行数
返回的行数
语法解析器 : Mysql通过关键字将SQL语句进行解析,并生成一棵对应的“解析树”。MySQL解析器将使用mysql语法规则验证和解析查询。 如:验证是否使用错误的关键字,或者使用关键字的顺序是否正确等。或者它还会验证引号是否能前后正确匹配。
预处理器 :根据一些MySQL规则进一步检查解析树是否合法。如:检查数据表和数据列是否存在,还会解析名字和别名,看看它们是否有歧义。
查询优化器:使用基于成本的优化器,尝试预测一个查询使用某个执行计划的成本,并选择成本最小的一个。
使用很多优化策略来生成一个最优的执行计划,优化策略可以简单地分为,一种静态优化,一种动态优化。
静态优化可以直接对解析树进行分析,并完成优化。静态优化不依赖特别的值,如where条件带入的一些常数等。
动态优化则和查询的上下

本文详细介绍了MySQL查询的执行流程,包括解析、预处理、优化和执行,强调了响应时间、扫描行数和返回行数作为衡量查询效率的指标。优化策略包括调整查询顺序、避免全列返回等。接着探讨了查询优化器的工作,如静态和动态优化。在索引部分,讲解了B-Tree索引和哈希索引的工作原理,以及如何选择合适的索引策略,如前缀索引、多列索引和避免冗余索引。
最低0.47元/天 解锁文章
193

被折叠的 条评论
为什么被折叠?



