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通过应用逻辑优化规则,如列裁剪、谓词下推和常量传播,来优化逻辑计划。
物理计划的代价计算是如何进行的?
物理计划的代价计算通过枚举所有可能的物理计划,计算每个方案的成本,并选择代价最低的方案。
➡️