

在评估数据库性能时,如何同时衡量“算得快”和“算得省”一直是工程师关注的核心问题。
Coffee-shop Benchmark [1] 是由社区研究者提出的公开测试,用于评估不同数据库系统在计算密集型 Join 与 Aggregation 工作负载下的性能与成本表现。由于其查询设计兼具业务代表性与计算复杂度,能够较全面地反映分析型数据库在真实工作负载下的表现,因此被用于对比 Databricks、Snowflake、ClickHouse 等主流系统 [2–6]。
测试内容模拟了典型的零售与门店经营分析场景,涵盖销售趋势、利润分析、折扣策略等多种典型查询类型,能够较全面地反分析型数据库的执行性能与资源效率。
出于研究兴趣与工程验证,我们在相同的测试逻辑与实例规格下,复现了 Coffee-shop Benchmark 的 17 个查询 [1,4],并在 StarRocks 上完成了 500M、1B、5B 三种规模的数据集验证。
结果显示,在这些涉及大量 Join 与高基数聚合的复杂查询中,StarRocks 以更低的成本和更短的运行时间完成了全部测试,整体性能与成本效率较参考系统提升约 2–10 倍。
这一结果不仅验证了 StarRocks 在算子优化、向量化执行和资源调度方面的工程实力,也意味着在广告归因、用户画像、实时看板等典型场景中,企业可以用更少的资源获得更快的分析体验。
对关注实时分析性能与成本优化的开发者和架构师而言,这一测试结果为系统选型与性能评估提供了一个客观、可复现的参考,也进一步印证了 StarRocks 在 Lakehouse 架构下的高性价比优势。
Coffee-shop benchmark 的数据集包含一个事实表 (fact_sales )与两个维度表( dim_locations、dim_products)组成:
dim_locations:1000 行
dim_products:26 行
在查询类型上,Coffee-shop Benchmark 涵盖了两类典型的 Join 场景:
fact_sales 与 dim_locations 在 location_id 列上进行等值关联。该列为 VARCHAR 类型,能够有效验证系统在大规模分布式 Join 下的并行执行与数据分片效率。fact_sales 与 dim_products 通过 name 列关联,同时包含时间范围条件 f.order_date BETWEEN p.from_date AND p.to_date。这种模式在实际业务中常见(如带有效期的商品维度表),能够检验系统对复杂 Join 条件的优化与执行效率。除 Join 外,17 个查询还覆盖了多种 Aggregation 模式。其中包括 COUNT DISTINCT 在内的多种聚合函数,并在不同列组合下进行 GROUP BY。其中最具挑战性的为 Q10 与 Q16,它们执行 COUNT(DISTINCT order_id) 并以多个列进行 GROUP BY。由于 order_id 的唯一值极多,平均每个 key 仅出现不到两次,这类查询对系统的中间聚合、去重和内存管理提出了极高要求。
在这类大量数据 Join 和高基数聚合场景中,StarRocks 在高效的 Hash Map 实现、多阶段聚合、Join Runtime Filter、低基数字典优化等机制协同作用下,能够在复杂的 Join 与聚合查询中稳定保持较高的性能与资源利用率。
为确保测试结果具备可比性,我们采用了与前人研究相近的实例配置和数据分布方式:
500M scale:2 或 4 个实例。
1B scale:2 或 4 个实例。
5B scale:8 或 16 个实例。
CREATE OR REPLACE TABLE)进行等价替换,不改变语义与逻辑。fact_sales 表的 (order_date, location_id) 列进行了联合统计信息收集,以帮助优化器生成更优计划;其他参数均保持默认。每个查询执行 5 次,取最短一次结果作为 warm-cache 性能。
对比系统(ClickHouse、Snowflake、Databricks)的结果参考了已公开的研究与博客 [2–6],并在相同数据规模(500M、1B、5B)下进行对比,用于评估整体运行时间与成本效率。
Total Cost

Total Runtime

Cost per Query (Except Q10 & Q16)

Runtime per Query (Except Q10 & Q16)

Cost per Query (Q10 & Q16 Only)

Runtime per Query (Q10 & Q16 Only)

Total Cost

Total Runtime

Cost per Query (Except Q10 & Q16)

Runtime per Query (Except Q10 & Q16)

Cost per Query (Q10 & Q16 Only)

Runtime per Query (Q10 & Q16 Only)

Total Cost

Total Runtime

Cost per Query (Except Q10 & Q16)

Runtime per Query (Except Q10 & Q16)

Cost per Query (Q10 & Q16 Only)

Runtime per Query (Q10 & Q16 Only)

Coffee-shop Benchmark 共包含 17 个查询,覆盖 Join、Aggregation、窗口函数、排序等多种复杂操作。其中 Join 和 Aggregation 是大多数查询的主要计算瓶颈。
在 500M、1B、5B 三种数据规模下,StarRocks 均展现出出色的线性扩展性与资源利用效率:
这些结果表明,StarRocks 在复杂分析型负载下能够充分利用多节点计算资源,并在高 Join、高基数聚合场景中依旧保持稳定的性能与成本平衡。
需要说明的是,Coffee-shop Benchmark 的维度表规模相对较小(分别为 26 行与 1000 行),主要用于验证以事实表为主的数据分析场景。
在更复杂的工业标准测试(如 TPC-DS)中,StarRocks 同样在多表 Join 与大规模聚合等高负载场景下表现稳定,继续保持出色的性能与成本效率平衡。
更多详细测试结果可参考 👉StarRocks TPC-DS Benchmark。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。