1. 测试背景
starrocks 2.0.1版本使用低基数全局字典优化后,性能有很大提升,这是准备重点测试部分,测试后对于聚合sql有明显的性能提升。当然企业中统计分析中多维数据分析的场景也比较多,有助于整体的性能提升,大家可以规划合适时间进行版本升级。
2. 测试集群
3台32核64G组成的starrocks集群
3. 测试模拟数据
3.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-0.9.3/ssb-poc
make && make install
3.3.2 生成100G数据脚本
cd /opt/soft/ssb-poc-0.9.3/ssb-poc/output
sh bin/gen-ssb.sh 100 /mnt/starrocks/testdata
3.3.3 修改配置
vim /opt/soft/ssb-poc-0.9.3/ssb-poc/output/conf/starrocks.conf
3.3.4 安装pymysql (ps:没有情况下)
pip3 install PyMySQL
3.3.5 导入数据
cd /opt/soft/ssb-poc-0.9.3/ssb-poc/output
sh bin/stream_load.sh /mnt/starrocks/testdata
3.3.6 插入数据到宽表lineorder_flat
sh bin/flat_insert.sh
显示:
sql: ssb_flat_insert start
sql: ssb_flat_insert success
3.3.7 表条数
表名 | 行数 |
customer | 3000000 |
dates | 2556 |
lineorder | 600037902 |
lineorder_flat | 600037902 |
part | 1400000 |
supplier | 200000 |
4. 测试结果
4.1 使用benchmark
ssb 并行度8 | ssb-flat 并行度8 | |
q1 | 630ms | 65ms |
q2 | 451ms | 26ms |
q3 | 77ms | 52ms |
q4 | 4171ms | 255ms |
q5 | 312ms | 182ms |
q6 | 292ms | 144ms |
q7 | 810ms | 249ms |
q8 | 341ms | 178ms |
q9 | 279ms | 126ms |
q10 | 92ms | 30ms |
q11 | 720ms | 260ms |
q12 | 293ms | 120ms |
q13 | 215ms | 87ms |
4.2 聚合sql测试
使用低基数全局字典优化,必须进行采集统计信息才能生效,测试阶段采用的是手动Analyze收集,立刻生效就会进行调度。后续生产实践可进行FE的相关配置,详情见starrocks文档说明。
对比如下表格中两个版本的查询性能:
starrocks 1.18.5 | VS | starrocks 2.0.1 |
4.2.1 百万级数据表
使用相同的真实场景聚合sql,百万级的数据表,starrocks1.18.5版本执行时间在5S+量级,而starrocks2.0.2版本的执行时间在毫秒级。
4.2.2 千万级数据表
使用相同的真实场景聚合sql,千万级的数据表,starrocks1.18.5版本执行时间在7S+量级,而starrocks2.0.2版本的执行时间在1秒级。