聊聊分布式 SQL 数据库Doris(五)

发布时间 2023-11-27 10:46:07作者: 又见阿郎

阅读 Doris SQL 原理解析,总结下Doris中SQL解析流程:

  1. 词法识别:解析原始SQL文本,拆分token
  2. 语法识别:将token转换成AST
  3. 单机逻辑查询计划:将AST经过一系列的优化(比如,谓词下推等)成查询计划,提高执行性能与效率。
  4. 分布式逻辑查询计划:根据分布式环境(数据分布信息、连接信息、Join算法等)将单机逻辑查询计划转换成分布式逻辑查询计划。
  5. 分布式物理查询计划:在逻辑查询计划的基础上,根据数据的存储方式和机器的分布情况生成实际的执行计划。

image

逻辑查询与物理查询的区别如下

  1. 逻辑查询计划(Logical Query Plan):
    ○ 关注逻辑操作: 逻辑查询计划描述了查询的逻辑操作,即查询的高层次逻辑结构,而不关心具体的物理执行细节。
    ○ 抽象和通用性: 逻辑查询计划是相对抽象和通用的,与底层存储引擎和执行引擎的具体实现无关。
    ○ 用于优化器: 逻辑查询计划是优化器进行查询优化的基础。优化器根据逻辑查询计划来选择合适的物理执行计划。
  2. 物理查询计划(Physical Query Plan):
    ○ 关注具体执行细节: 物理查询计划描述了如何在底层存储引擎上执行查询的具体细节,包括如何访问数据、执行连接、过滤和聚合等操作。
    ○ 与底层存储引擎相关: 物理查询计划是与底层存储引擎和执行引擎密切相关的,考虑了存储布局、索引选择、并行度等底层执行细节。
    ○ 用于执行引擎: 物理查询计划是执行引擎直接使用的计划,它指导具体的查询执行。