StarRocks2.0.1低基数全局字典优化测试
--2022-01-24 春雷
1、汇总
1.1、前言
随着StarRocks的2.0.1版本的发布,解决了2.0.0-GA的低基数全局字典优化的部分问题,为官方的速度点个赞!再次进行了性能对比测试,目前线上已经上线了4套2.0.1版本,表现良好。
1.2、测试结论
- 2.0.1使用低基数全局字典优化后,平均执行时间降低: 56.53% ,优化明显
- 2.0.1的低基数全局字典优化需要一定信息采集才可以
- 要确认是否使用低基数全局字典优化,可以查看执行计划
2、测试基本信息
测试程序机器:10.1.1.1
测试集群:xxx
测试计划:
对比 1.19.5 与 2.0.1 版本的低基数性能
3、测试模拟数据
3.1、模拟数据
【安装】:
cd /opt/soft/
wget https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/ssb-poc-0.9.3.zip unzip ssb-poc-0.9.3.zip
cd ssb-poc
make && make install
【生成100G数据脚本 】:
cd /opt/soft/ssb-poc-0.9.3/ssb-poc/output
sh bin/gen-ssb.sh 100 data_dir
【修改配置】:
vim /opt/soft/ssb-poc-0.9.3/ssb-poc/output/conf/starrocks.conf
【如果没有pymysql需要安装下】:
/opt/soft/python3.6/bin/python3.6 -m pip install PyMySQL
【导入数据】:
cd /opt/soft/ssb-poc-0.9.3/ssb-poc/output
sh bin/stream_load.sh data_dir
【 插入数据到宽表lineorder_flat 】:
sh bin/flat_insert.sh
sql: ssb_flat_insert start
sql: ssb_flat_insert success
【表条数】:
4、测试结果
4.1、1.19.5的测试结果
4.2、升级版本
starrocks_manage cluster upgrade xxx 1.19.5 2.0.1
注:此工具为自开发工具
4.3、2.0.1测试结果
升级后立即执行测试,结果如下:
4.4、对比结果
现象:1.19.5升级到2.0.1 后,低基数的相关查询SQL,性能没有提升。
原因:执行计划没有走低基数全局字典优化,所以性能无变化
处理:
- analyze table
- 确认开启cbo_enable_low_cardinality_optimize=true
说明:analyze table 会收集统计信息,然后再发起查询的话,就会去收集字典,然后再查询应该就有了
4.5、分析表
analyze table lineorder;
Query OK, 0 rows affected (0.30 sec)
analyze table lineorder_flat;
Query OK, 0 rows affected (0.65 sec)
4.6、低基数优化说明
【查看执行计划】:
explain costs select count(*),lo_shipmode,lo_orderpriority from lineorder_flat group by lo_shipmode,lo_orderpriority;
【没有走低基数优化的执行计划】:
【走了低基数优化的执行计划】:
如果低基数全局字典生效了会有 dict_col 的字段
【说明】:
第一次查询的时候,没生效的话,如果是低基数的话,会触发收集,收集后的查询就生效了
4.6、2.0.1再次测试结果
均确认使用了低基数优化
5、对比
5.1、对比汇总
- 2.0.1使用低基数全局字典优化后,平均执行时间降低: 56.53% ,优化明显
- 2.0.1的低基数全局字典优化需要一定信息采集才可以
- 要确认是否使用低基数优化,可以查看执行计划