Advertisement

duckdb查询计划:逻辑与物理

阅读量:

摘要:

duckdb的查询规划过程高度契合教科书中的理论定义,首先将ANSI SQL语句转化为查询树结构,进而生成对应的逻辑查询计划。随后,将逻辑查询计划中的各个节点逐步映射为物理执行计划的节点。

相较于mysql中逻辑计划与物理计划之间缺乏明确区分的情况,所有操作均直接针对转换后的查询树节点进行处理,整体流程显得更加清晰明了。

本文将对逻辑计划与物理计划的相关内容进行深入探讨。在分析过程中会涉及基于规则的优化策略,但不会涵盖基于代价的优化方法。有关基于代价的优化内容将在后续部分另行展开讨论。

参考

https://www.youtube.com/watch?v=bXfvmeWsQ78

ANSI SQL生成逻辑计划

  • duckdb 引入了简化版的 postgres 语法树构建组件
    • 这可以被视作对 ANSI SQL 进行词法解析的过程,即实现分词操作,随后进行语法解析,进而生成查询树节点。
    • 实际上,所有关系型数据库在这一方面的处理方式大致相同,例如 mysql,关键在于深入理解经过语法解析后所形成的查询树节点的数据结构,这些结构将作为后续逻辑执行计划生成的重要输入

核心处理:

Planner::CreatePlan功能实现

复制代码
 #0  duckdb::Planner::Create

全部评论 (0)

还没有任何评论哟~