一、TiDB优化器架构
1、解析Parse:生成AST语法树
2、预处理PreProcess:预处理
3、逻辑优化
4、物理优化
二、预处理pre process过程
点查:在预处理阶段执行,针对单表查询,返回1行或者0行数据,直接下推到SQL执行器
三、逻辑优化
1、列裁剪:对于算子中实际用不上的列,优化器在优化的过程中没有必要保留它们。对这些列的删除会减少 I/O 资源占用,并为后续的优化带来便利。
2、谓词下推:将查询语句中的过滤表达式计算尽可能下推到距离数据源最近的地方,以尽早完成数据的过滤,进而显著地减少数据传输或计算的开销。
3、Max/Min 函数消除:在 SQL 中包含了 max/min 函数时,查询优化器会尝试使用 max/min 消除优化规则来将 max/min 聚合函数转换为 TopN 算子,从而能够有效地利用索引进行查询。
4、连接顺序:根据表数据量以及数据分布,决定Join顺序
5、分区裁剪:分区裁剪是只有当目标表为分区表时,才可以进行的一种优化方式。分区裁剪通过分析查询语句中的过滤条件,只选择可能满足条件的分区,不扫描匹配不上的分区,进而显著地减少计算的数据量。
四、物理优化
留言与评论(共有 0 条评论) “” |