TiDB 源码阅读(四):AST、逻辑计划、物理计划

💡 原文中文,约14000字,阅读约需34分钟。
📝

内容提要

本文探讨了TiDB中的AST、逻辑计划和物理计划。AST是SQL语句的抽象语法树,帮助数据库解析SQL。逻辑计划通过优化AST生成,物理计划则涉及具体的数据操作。文章还介绍了火山模型及其优缺点,强调了从SQL到执行计划的优化过程。

🎯

关键要点

  • TiDB中的AST是SQL语句的抽象语法树,用于解析SQL。
  • AST抛弃不重要的细节,保留语法结构,清晰表达代码层次。
  • 逻辑计划通过优化AST生成,涉及构建逻辑算子。
  • 逻辑计划优化包括列裁剪、谓词下推、常量传播等。
  • 物理计划是如何操作数据的计划,涉及具体的数据操作。
  • 火山模型是经典的查询执行引擎实现模型,数据通过统一接口流动。
  • 火山模型的缺点是效率低,TiDB通过一次处理多个数据块来优化。
  • Cascades优化器通过记录所有可能的方案来系统化搜索,避免重复计算。
  • 物理计划生成过程包括统计信息计算、物理属性准备和最优物理计划选择。
  • 完整的SQL到物理计划的过程是自顶向下的递归搜索,找到代价最低的执行方案。

延伸问答

AST在TiDB中有什么作用?

AST是SQL语句的抽象语法树,用于解析SQL,使得服务端能够理解和操作客户端传来的SQL。

逻辑计划是如何生成的?

逻辑计划通过优化AST生成,涉及构建逻辑算子,并应用各种优化规则,如列裁剪和谓词下推。

火山模型和Cascades优化器有什么区别?

火山模型采用两阶段流水线优化,而Cascades优化器使用Memo记录所有可能的方案,系统化搜索以避免重复计算。

物理计划的生成过程包括哪些步骤?

物理计划生成包括计算统计信息、准备物理属性、寻找最优物理计划等步骤。

TiDB如何优化逻辑计划?

TiDB通过应用逻辑优化规则,如列裁剪、谓词下推和常量传播,来优化逻辑计划。

物理计划的代价计算是如何进行的?

物理计划的代价计算通过枚举所有可能的物理计划,计算每个方案的成本,并选择代价最低的方案。

➡️

继续阅读