测试目标
测试StarRocks 3.0.0版本存算分离在真实业务场景中的性能表现,主要包含以下测试场景:
- 测试存算分离架构下表的数据导入性能,包括routine load,stream load,以及sql insert/update/delete
- 测试存算分离架构下表的查询性能,包括开启本地缓存与为开启本地缓存的对比
- 测试be节点扩缩容时服务稳定性以及性能对比
硬件规格
FE
| 硬件 | 规格说明 |
|---|---|
| 实例规格 | 阿里云ecs.c6.2xlarge |
| Region | 北京 |
| 节点数 | 1 |
| CPU | 8 vCPU |
| 内存 | 16 GB |
| 磁盘 | 100GB SSD |
BE:
| 硬件 | 规格说明 |
|---|---|
| 实例规格 | 阿里云ecs.i3g.4xlarge |
| 节点数 | 3 |
| Region | 北京 |
| CPU | 16 vCPU |
| 内存 | 64GB |
| 磁盘 | 900 GB nvme本地盘 |
软件版本
StarRocks 3.0.0
软件配置
BE参数
buffer_stream_reserve_size = 8192
routine_load_thread_pool_size=30
max_routine_load_task_concurrent_num=10
lake_gc_segment_expire_seconds=3600
lake_gc_segment_check_interval=1800
experimental_lake_enable_fast_gc=true
lake_gc_metadata_max_versions=1
starlet_fs_stream_buffer_size_bytes=1048576
compact_threads=16
max_consumer_num_per_group=100
tablet_max_pending_versions=10000
tablet_max_versions=10000
FE参数
max_routine_load_task_num_per_be=30
routine_load_task_consume_second=30
global变量
set global enable_query_cache =false;
set global new_planner_optimize_timeout=600000;
set global enable_profile=true;
set global query_timeout =1800;
测试结果
数据导入
使用数据导入方式为:stream Load / routine load / sql insert
导入性能如下:
Routine load导入峰值12万QPS,数据json格式,单条大小300B左右。
Stream load导入峰值15万QPS,数据json格式,单条大小100B左右。
Sql insert,使用hive catalog,将hive orc表数据insert到olap表,按照hive天分区导入,4000万数据导入耗时90S左右。
数据查询
| sr-3.0-cloud-native | Others | |
|---|---|---|
| QUERY01 | 超过40亿数据表Count distinct,第一次查询耗时21s,后面每次耗时3s。 | Presto+hive 耗时120S |
| QUERY02 | 多张表union all后的group by 耗时3S | 耗时13S |
| QUERY03 | 多张表union all后的group by 耗时8S | 耗时45S |
| QUERY04 | join后group by 耗时0.5S | 耗时10S |
| QUERY05 | Select disctin from 子查询join后group by 耗时0.7s | 耗时10S |
| QUERY06 | 多表join后count/sum 耗时1.5S | 耗时16S |
| QUERY07 | 多表join后count/sum 1.8S | 8S |