StarRocks TPC-DS 基准测试深度解析
一、TPC-DS基准测试概述
TPC-DS是由美国交易处理效能委员会(TPC)制定的决策支持系统基准测试标准,相比TPC-H,它提供了更复杂、更全面的测试场景。该测试模拟了零售企业的三种销售渠道(实体店、互联网、目录)的业务场景,包含24张表结构和99个复杂查询,数据规模可从1GB扩展到3TB不等。
二、测试环境配置
2.1 硬件环境
测试采用4台阿里云主机,配置如下:
- CPU:8核 Intel Xeon Platinum 8269CY @ 2.50GHz
- 内存:32GB
- 网络:5Gbps带宽
- 存储:ESSD云盘
2.2 软件环境
对比测试了StarRocks 3.0社区版和Trino-419:
- StarRocks部署:1个FE节点 + 3个BE节点
- Trino部署:1个Coordinator + 3个Worker
- 操作系统:CentOS 7.8
- 数据存储:Hive 3.1.2管理,Parquet格式+LZ4压缩
三、测试数据规模
测试采用100GB规模的TPC-DS数据集,主要表数据量如下:
| 表名 | 数据量(行) | |------|-----------| | catalog_sales | 1.44亿 | | store_sales | 2.88亿 | | inventory | 3.99亿 | | catalog_returns | 1440万 | | store_returns | 2880万 |
四、性能对比结果
4.1 总体性能
在99个查询的总耗时对比中:
- StarRocks本地存储:174秒
- StarRocks Hive外表:239秒
- StarRocks Hive外表(开启Data Cache):176秒
- Trino:892秒
性能倍数关系:
- 本地存储是Trino的5.1倍
- Hive外表是Trino的3.7倍
- Hive外表+Data Cache是Trino的5倍
4.2 典型查询性能
选取几个典型查询的耗时对比(单位:ms):
| 查询 | StarRocks本地 | StarRocks外表 | Trino | |------|--------------|--------------|-------| | Q4(复杂聚合) | 16,180 | 13,229 | 48,176 | | Q23(大表连接) | 24,500 | 24,746 | 145,850 | | Q67(复杂分析) | 15,486 | 23,743 | 58,091 | | Q72(多表关联) | 1,764 | 2,733 | 13,973 |
五、测试方法详解
5.1 数据生成
使用tpcds-poc工具生成100GB测试数据:
wget https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/tpcds-poc-1.0.zip
unzip tpcds-poc-1.0
cd tpcds-poc-1.0
sh bin/gen_data/gen-tpcds.sh 100 data_100
5.2 StarRocks本地表测试
- 创建表结构:
sh bin/create_db_table.sh ddl_100
- 导入数据:
sh bin/stream_load.sh data_100
- 执行测试:
sh bin/benchmark.sh -p -d tpcds
5.3 Hive外表测试
- 创建Parquet格式外表:
CREATE EXTERNAL TABLE call_center (
cc_call_center_sk int,
cc_call_center_id string,
...
) STORED AS PARQUET LOCATION '/user/tmp/parquet/call_center';
- 从CSV导入数据:
INSERT INTO tpcds_100g_parquet_lz4.call_center
SELECT * FROM tpcds_100g_csv.call_center
ORDER BY cc_call_center_sk;
六、性能优化建议
-
Data Cache使用:测试显示开启Data Cache后,Hive外表查询性能提升35%,接近本地存储性能
-
聚合下推:通过设置
cbo_push_down_aggregate_mode
参数优化聚合操作 -
数据组织:对常用查询条件列进行排序存储可提升查询效率
-
资源配置:适当增加BE节点内存可提升复杂查询性能
七、结论分析
StarRocks在TPC-DS测试中展现出显著优势:
- 向量化执行引擎高效处理复杂分析查询
- CBO优化器智能选择最优执行计划
- 本地存储格式针对分析场景深度优化
- 外表查询通过Data Cache减少IO开销
这些特性使StarRocks成为实时分析场景的理想选择,特别适合需要快速响应复杂查询的大数据环境。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考