试验功能
更新时间:2021-08-20
本文档主要介绍 Doris 的部分试验性质的功能。
这些试验功能默认都处于关闭状态,在功能成熟后会在之后的版本升级中默认开放。
Join Reorder
在数据分析领域,SQL 查询优化器能够显著提高用户提交 SQL 的执行效率。而其中很重要的一部分就是对 SQL 中表的 Join 顺序的自动调整。Join 顺序的不同可能会导致 SQL 的执行效率有着天壤之别。
在新版本中,用户可以通过以下 会话变量 开启新的 Join Reorder 算法逻辑。该算法会尝试避免 Cross Join 的出现,并根据代价模型来优化 Join 的顺序。
set enable_cost_based_join_reorder = true;
当执行复杂 Join 操作时,可以尝试开启这个功能,看是否可以提升执行效率。
常量表达式折叠
Doris 的查询优化器会对 SQL 中的部分常量表达式进行折叠(即直接计算出常量值后替换原 SQL 中的常量表达式)。如
select * from tbl where k1 = 1+2;
==>
select * from tbl where k1 = 3;
但受限于 Compute Node(FE)端的计算能力,部分复杂的常量表达是无法计算,而未经折叠的常量表达是可能会影响如分区裁剪、谓词下推等优化功能。
在新版本中,用户可以通过开启以下 会话变量,利用 Compute Node(BE)的完整表达式计算能力进行常量表达式计算:
set enable_fold_constant_by_be = true;
注意,开启这个功能会导致一些额外的 RPC 开销。在高并发查询场景,需观察对集群整体的影响。