在 1.16.0 版本,StarRocks推出的新优化器,可以针对复杂 Ad-hoc 场景生成更优的执行计划。StarRocks采用cascades技术框架,实现基于成本(Cost-based Optimizer 后面简称CBO)的查询规划框架,新增了更多的统计信息来完善成本估算,也补充了各种全新的查询转换(Transformation)和实现(Implementation)规则,能够在数万级别查询计划空间中快速找到最优计划。
所以开启新优化器前,需要先开启统计信息收集。启用统计信息自动抽样收集方式:
修改 FE Config :
enable_statistic_collect = true
然后重启FE。
注意:启用新优化器之前,建议先开启统计信息自动抽样收集 1 ~ 2天。
全局粒度开启:
set global enable_cbo = true;
Session 粒度开启:
set enable_cbo = true;
单个 SQL 粒度开启:
SELECT /*+ SET_VAR(enable_cbo = true) */ * from table;
StarRocks提供一个新旧优化器对比的工具,用于回放fe中的audit.log,可以检查新优化器查询结果是否有误,在使用新优化器前,建议使用StarRocks提供的对比工具检查一段时间:
java -jar new_planner_test.jar $fe.audit.log.path
执行测试,测试脚本会执行fe.audit.log 中的查询请求,并进行比对,分析查询结果并记录日志。版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://docs.starrocks.com/zh-cn/main/using_starrocks/Cost_based_optimizer
内容来源于网络,如有侵权,请联系作者删除!