TPC-H 成本不到一分钱:ClickHouse Cloud 对比 Snowflake、Databricks、BigQuery 和 Redshift

TPC-H 成本不到一分钱:ClickHouse Cloud 对比 Snowflake、Databricks、BigQuery 和 Redshift
本文字数5249估计阅读时间14分钟作者Tom Schreiber, Mark Needham, Alexander Gololobov, Andriy Yakovlev and Robert SchulzeTL;DR在 TPC-H SF100 标准下单个 59 核 ClickHouse Cloud 节点在实际运行时间方面与 Snowflake、Databricks、BigQuery 和 Redshift 相比极具竞争力同时在性价比方面位居榜首。在 SF10 标准下它运行所有 22 个查询的成本不到一美分。ClickHouse Cloud 加入 TPC-H 对比测试我们在 ClickHouse Cloud、Snowflake、Databricks、BigQuery 和 Redshift 上运行了完整的 TPC-H 工作负载。在 SF100 标准下这意味着处理 100 GB 数据、8.66 亿行并执行 22 个包含大量连接的分析查询。结果显示ClickHouse Cloud 在实际运行时间方面表现出强劲竞争力并在性价比方面位居榜首。在 SF10 标准下完成整个工作负载仅需 2.9 秒计算成本为 0.009 美元。不到一美分。本文将展示基准测试结果。有关这些结果背后长达两年之久的连接Join工程工作请参阅配套文章。基准测试设置所有基准测试脚本、查询和结果文件均已发布在公共 GitHub 仓库中以便结果能够被复现和审查。数据集与运行时间测量主要对比测试采用 TPC-H SF100 标准对 8.66 亿行数据执行 22 个查询。在运行时间测量方面我们区分冷启动运行Cold Run和热启动运行Hot Run冷启动运行Cold Runs我们并未系统地比较冷启动性能。云数据仓库表现出不同的缓存行为且大多数不允许用户可靠地重置操作系统级别的页面缓存或按需重启计算资源。由于冷启动条件无法标准化因此冷启动结果既不公平也难以复现。热启动运行Hot Runs每个查询在禁用结果缓存的情况下运行三次。图表中采用的是最快的热启动运行结果。由于禁用了结果缓存此基准测试旨在衡量查询执行本身的性能而非返回之前已缓存的结果。对比系统对于ClickHouse Cloud我们采用了一套固定配置一个配备 59 核的 AWS 单计算节点。而对于其他系统我们选择了实用的数据仓库或无服务器Serverless容量配置并将在后续讨论与其最接近的硬件对比。• Snowflake Small、Medium、Large 和 4X-Large Gen2 warehouses• Databricks (SQL Serverless) Small、Medium、Large 和 4X-Large warehouses• BigQuery 2,000 slots• Redshift Serverless 128 RPUs成本计算对于成本计算我们沿用了此前在关于云数据仓库计费和成本性能的文章中介绍的方法。我们将各个供应商的公开计费模型应用于实测的查询运行时间并假设所有系统都能实现精确的按秒计算计费。我们还在可比较的美国东部地区采用企业级定价对于支持的系统使用 AWSus-east对于 BigQuery则使用 GCPus-east。基于上述配置我们首先来看原始热运行时间 (raw hot runtime)。TPC-H SF100原始热运行时间 (raw hot runtime)TPC-H SF100 包含100 GB 数据、8.66 亿行以及22 个连接密集型分析查询。在下图中每个条形图汇总了 22 个 TPC-H 查询中各查询三次运行的最快结果。数值越低表示性能越好。ClickHouse Cloud在 19.8 秒内完成了工作负载。Snowflake则在 Small warehouse 上耗时 32.7 秒在 Medium 上耗时 22.9 秒在 Large 上耗时 15.9 秒在 4X-Large 上耗时 14.7 秒。Databricks在其不同规模的 SQL 仓库 (SQL warehouse) 上表现如下Small 仓库耗时 37.3 秒Medium 仓库耗时 40.0 秒Large 仓库耗时 28.9 秒4X-Large 仓库耗时 26.4 秒。BigQuery在使用 2,000 个 slots 的情况下耗时 26.2 秒 完成。Redshift Serverless在使用 128 个 RPU (Redshift Processing Unit) 的情况下耗时 30.7 秒 完成。需要注意的是各系统所使用的计算资源配置并不完全相同。ClickHouse Cloud 使用了一个配备 59 个核心和 236 GiB 内存的 Graviton3 计算节点。针对 Snowflake 和 Databricks我们测试了多种 SQL 仓库 (SQL warehouse) 规模旨在展示运行时长随计算资源扩展的变化情况。与 ClickHouse Cloud 的 59 核节点最接近的硬件参考配置是 Snowflake Large Gen2据了解采用 64 个 AWS Graviton3 核心和 128 GB 内存以及 Databricks Large根据文档中记载的经典计算平面 (compute-plane) 规格对应 64 个 Intel Xeon E5-2686 v4 核心和 488 GiB 内存。尽管我们在本次基准测试中使用了 Databricks SQL Serverless但其公布的 SQL 仓库规格仍提供了一个有价值的参考依据。此外还需注意采用无服务器容量模型 (serverless capacity model) 的系统能够自动将查询工作分散到大规模的预配置计算池中在此次基准测试中BigQuery 使用了高达 2,000 个 slots而 Redshift Serverless 则使用了 128 个 RPU。凭借单个 59 核计算节点ClickHouse Cloud 在 TPC-H SF100 的裸机运行时间方面表现出强大的竞争力足以与主流云数据仓库抗衡这其中包括配置相近的 64 核 Snowflake 和 Databricks 数据仓库以及那些能在远超 59 核的大型预置计算池中自动扩展的无服务器引擎。运行时间仅是考量之一如上所述直接比较各系统在运行 TPC-H SF100 工作负载时所使用的计算资源量是困难的。但我们可以直接比较运行此工作负载的成本。下面的图表沿用了相同的运行时间条形图并叠加了各厂商基于其公开计费模型所计算的实际运行计算成本。ClickHouse Cloud以 19.8 秒完成工作负载计算成本为 $0.063。SnowflakeLarge 用时更短为 15.9 秒但成本高达 $0.143。Snowflake 4X-Large 再次提速用时 14.7 秒但成本则飙升至 $2.121。Databricks的成本范围则在 $0.087 至 $2.714 之间。BigQuery用时 26.2 秒成本为 $0.163而Redshift Serverless则用时 30.7 秒成本为 $0.436。下一节将运行时间与成本整合生成单一的成本-性能得分。TPC-H SF100成本-性能排名前面的图表并列展示了运行时间和成本。现在我们将这两项指标整合为一个简单的成本-性能得分成本-性能得分 计算成本 × 运行时间得分越低越好。这有助于我们解答真正的云基准测试问题谁能以每美元成本提供最佳的 Join (连接) 性能运行速度快的系统得分更高成本低的系统得分更高。运行缓慢或价格昂贵的系统会迅速落后。如果一个系统既慢又贵那么这两种负面影响还会叠加。ClickHouse Cloud荣登榜首。紧随其后的是SnowflakeLarge 和 Snowflake Medium 配置两者的表现均比 ClickHouse Cloud 差约 2 倍。DatabricksSmall 以及拥有 2,000 个槽位 (slots) 的BigQuery则差 3 倍。DatabricksLarge 和 Medium 分别以 5 倍和 6 倍的差距位列其后。在排名靠后的配置中Redshift Serverless的表现差 11 倍Snowflake 4X-Large 差 25 倍Databricks 4X-Large 差 57 倍而 BigQuery 按需 (On-demand) 更是差了 67 倍。ClickHouse Cloud 在 TPC-H SF100 基准测试中实现了最佳的成本-性能综合得分最低最接近的测试配置也比其表现差约 2 倍。TPC-H SF100按查询运行时间细分为了全面起见这里列出了按查询的运行时间细分。每个条形图展示了 22 个 TPC-H 查询中每个查询三次运行中的最快结果。聚合结果并非由某个单一异常值 (outlier) 导致。ClickHouse Cloud 在整个查询集上都表现出持续的竞争力。规模缩减TPC-H 运行成本低于一美分SF100 是本文的主要基准测试。但将规模缩减至 SF10却带来了点睛之笔。在 SF10 场景下该工作负载包含8600 万行 (86M rows)数据涉及与 SF100 相同的22 个 Join (连接) 密集型 TPC-H 查询。在相同的 ClickHouse Cloud 配置下使用一个 59 核的计算节点 (compute node)整个“热”工作负载 (hot workload) 在 2.9 秒 内完成运行计算成本仅为 0.009 美元。下图将运行时间与成本结合形成一个单一的性价比得分旨在回答“谁能以每美元实现最佳连接join性能”的问题。在此规模下ClickHouse Cloud在这两个维度上均表现出色它是测试中最快的配置同时运行成本也最低。Snowflake在性价比方面位居次席但性能表现仍旧差了 8 倍。BigQuery差了 12 倍RedshiftServerless差了 27 倍而更大规模的 Snowflake 和Databricks配置则远远落后。在 SF10 规模下ClickHouse Cloud 仅用 2.9 秒就能运行所有 22 个 TPC-H 查询成本不到一美分并且以显著优势提供了最佳性价比。规模扩展SF1000 及更高SF100 的测试结果展示了 ClickHouse 的当前实力凭借单个 59 核计算节点ClickHouse Cloud 在运行时间和性价比方面均能与主流云数据仓库抗衡包括那些采用更大规模或更弹性计算配置的系统。但 SF100 并非故事的终结。对于更庞大的规模因子例如TPC-H SF1000 及更高连接执行需要在多个节点间进行适当的扩展。这正是工程团队接下来的重点工作他们将在 ClickHouse Cloud 中为大型分布式连接引入多阶段分布式查询执行 (multi-stage distributed query execution)。这是下一篇章的内容。而当前这些成就则得益于过去两年在连接join工程上的持续投入。我们如何实现这一飞跃上述成果是 ClickHouse 团队两年专注于连接join工程的结晶。在这项工作启动一年后相同的 TPC-H SF100 连接密集型工作负载已经比 22.4 版本快 4.4 倍。又过了一年如今整体性能提升了 26 倍仅去年一年在默认设置下就带来了额外的6 倍性能提升。这一系列进步源于整个技术栈的优化具体包括更快的哈希连接 (hash joins)、更优的查询规划 (planning)、关联子查询 (correlated subquery) 支持、惰性列复制 (lazy column replication)、运行时过滤器 (runtime filters) 以及基于统计信息的连接重排序 (statistics-based join reordering)。配套文章详细阐述了这些数据背后的工程故事ClickHouse 如何从“速度快但不擅长连接操作”转变为默认即具备高性能连接能力的系统。经过两年专注于连接查询的工程优化ClickHouse 在 TPC-H SF100 以连接查询为主的工作负载下性能提升了 26 倍这正是取得这些基准测试结果的关键。ClickHouse 是面向 AI 时代打造的高性能实时分析数据库能够以极致性能处理海量数据分析任务。凭借高并发、低延迟和云原生架构ClickHouse 广泛应用于可观测性、数据仓库、实时分析及 AI 数据基础设施等场景。我们致力于帮助企业在公有云平台上构建安全、弹性且高性价比的实时分析与 AI 数据平台加速释放数据价值推动智能化创新与数字化转型。目前Trip.com、DiDi、Meta、Sony、Netflix、Deutsche Bank、Sierra、Cloudflare 等全球领先企业均在使用 ClickHouse 支撑其关键业务和数据分析平台。