TiDB优化原理

SQL从协议层传送到Parse进行解析,Parse模块会将SQL解析为AST语法树,从而让后面模块更容易读取识别;

Pre Process模块

  • 针对点查进行优化
    • 单表的SELECT/UPDATE/DELETE操作;
    • 只搜啊秒1行或者0行,过滤条件为等值
    • 返回记录条数为1行或者0行
    • 优化方式较为单一,使用频率高(OLTP)
    • 点查将直接跳过逻辑优化和物理优化,下推到SQL执行器;
  • 构造初始的逻辑执行计划

    • 常量折叠
      • age > 18 + 6  => age > 25
    • 表达式简化
      • id is not null and id < 1000; => id < 1000;
    • 子查询处理
      • 将子查询转换为左连接

Logical Optimize: 逻辑优化模块

  • 列裁剪
    • 分析SQL,将没有使用的列剪裁掉;
  • 分区裁剪
  • 聚合消除
  • MAX/MIN优化
  • 投影消除
  • 外连接消除
  • 谓词下推

    • 将过滤规则下推到各个存储节点,尽可能将计算下推到存储节点进行计算;
  • 连接顺序调整
    • 多表查询中,根据表连接条件和数量进行调整,找到最优的过滤方式;

Physical Optimize:物理优化模块

根据逻辑优化的结果,决定最终的扫描方式、索引选择和算子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值