阅读 Doris SQL 原理解析,总结下Doris中SQL解析流程:
- 词法识别:解析原始SQL文本,拆分token
- 语法识别:将token转换成AST
- 单机逻辑查询计划:将AST经过一系列的优化(比如,谓词下推等)成查询计划,提高执行性能与效率。
- 分布式逻辑查询计划:根据分布式环境(数据分布信息、连接信息、Join算法等)将单机逻辑查询计划转换成分布式逻辑查询计划。
- 分布式物理查询计划:在逻辑查询计划的基础上,根据数据的存储方式和机器的分布情况生成实际的执行计划。
逻辑查询与物理查询的区别如下
- 逻辑查询计划(Logical Query Plan): ○ 关注逻辑操作: 逻辑查询计划描述了查询的逻辑操作,即查询的高层次逻辑结构,而不关心具体的物理执行细节。 ○ 抽象和通用性: 逻辑查询计划是相对抽象和通用的,与底层存储引擎和执行引擎的具体实现无关。 ○ 用于优化器: 逻辑查询计划是优化器进行查询优化的基础。优化器根据逻辑查询计划来选择合适的物理执行计划。
- 物理查询计划(Physical Query Plan): ○ 关注具体执行细节: 物理查询计划描述了如何在底层存储引擎上执行查询的具体细节,包括如何访问数据、执行连接、过滤和聚合等操作。 ○ 与底层存储引擎相关: 物理查询计划是与底层存储引擎和执行引擎密切相关的,考虑了存储布局、索引选择、并行度等底层执行细节。 ○ 用于执行引擎: 物理查询计划是执行引擎直接使用的计划,它指导具体的查询执行。