广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > 数据库 > 正文

介绍MySQL Query Optimizer基本工作原理_mysql数据库培训

作者:小甘发布时间:2020-12-25分类:数据库浏览:1294


导读:  在分析MySQLQueryOptimizer的工作原理之前,先了解一下MySQL的QueryTree。MySQL的QueryTree是通过优化实现DBXP的经典数据结构...

  在分析MySQL Query Optimizer的工作原理之前,先了解一下MySQL的Query Tree。MySQL的Query Tree是通过优化实现DBXP的经典数据结构和Tree构造器而生成的,是指导完成一个Query语句的请求需要处理的工作步骤,我们可以简单地认为就是一个数据处理流程,只是以Tree的数据结构存放而已。通过Query Tree可以很清楚地知道一个Query的完成需要经过哪些步骤,每一步的数据来源在哪里,处理方式是怎样的。在整个DBXP的Query Tree生成过程中,MySQL使用了LEX和YACC这两个功能非常强大的语法分析工具。MySQL Query Optimizer的所有工作都是基于这个Query Tree进行的。

  MySQL Query Optimizer并不是一个纯粹的CBO,而是在CBO的基础上增加了一个被称为heuristic optimize的功能。也就是说MySQL Query Optimizer在优化一个Query认为的最优执行计划时,并不一定完全按照数据库的元信息和系统统计信息,而是在此基础上增加了某些特定的规则。其实就是在CBO的实现中增加了部分RBO的功能,以确保在某些特殊场景下控制Query按照预定的方式生成执行计划。

  当客户端向MySQL请求一条Query,命令解析器模块完成请求分类,区别出是SELECT并转发给MySQL Query Optimizer时,MySQL Query Optimizer首先会对整条Query进行优化,处理掉一些常量表达式的预算,直接换算成常量值。并对Query中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等。然后分析Query中的hint信息(如果有),看现实hint信息是否可以完全确定该Query的执行计划。如果没有hint或hint信息还不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据Query进行写相应的计算分析,然后再得出最后的执行计划。

  Query Optimizer是一个数据库软件非常核心的功能,虽然说起来只是简单的几句话,但在MySQL内部,MySQL Query Optimizer实际上经过了很多复杂的运算分析,才得出最后的执行计划。


数据库排行
标签列表
网站分类
文章归档
最近发表