查询计划的逻辑属性

Presto 实现了一个框架,用于将逻辑属性与查询计划节点生成的输出结果集相关联。这些逻辑属性可能源于对表定义的约束,或者源于查询计划中中间节点执行的操作,例如聚合、限制或谓词的应用。Presto 优化器然后可以使用这些逻辑属性执行优化,例如删除冗余操作或其他逻辑转换。

查询计划中逻辑属性的传播由 exploit_constraints 会话属性或 optimizer.exploit_constraints 配置属性启用,该属性在协调器的 etc/config.properties 中设置。默认情况下启用逻辑属性传播。

逻辑属性类型

Presto 检测并传播以下逻辑属性

  • KeyProperty - 针对计划节点生成的最终或中间结果集成立的一组不同的属性。

  • MaxCardProperty - 计划节点生成的最终或中间结果集的行数的可证明的最大值。

  • EquivalenceClassProperty - 针对计划节点生成的最终或中间结果集成立的等效变量和常量引用的类。