文字数:5415;估计阅读时间:14 分钟
作者:Al Brown

2016年6月15日,ClickHouse 基于 Apache 2.0 许可正式开源。十年后的今天,它已成为全球部署最广泛的分析数据库之一。这一切,都离不开你们------这2600多名在过去十年间,通过每月版本发布,持续构建、迭代、探讨并贡献的社区成员。
ClickHouse 的创建者兼 CTO Alexey Milovidov 也撰写了他对过去十年的思考与感悟。
开源十年回顾
仅在2025年,ClickHouse 便在十二个版本发布中,新增了 277 项新功能、319 项性能优化以及 1,051 个错误修复。
纵观这十年,ClickHouse 的成绩斐然:
• 2600+ 贡献者
• ~48,000 GitHub Star
• ~239,000 代码提交 (commits)
• ~800 版本发布
• 数亿次下载
• 200+ 集成方案
然而,这约 24 万次的提交,究竟成就了什么?

连接查(JOINs)的优化之路
在一次发布会议上,当被问及 ClickHouse 何时会停止优化连接(JOIN)性能时,Alexey 的回答是:"我们永远不会停止!"
他的话并非虚言。经过长达两年专注于连接(JOIN)工程优化,ClickHouse 在以连接操作为主的 TPC-H SF100 工作负载下,相比 22.4 版本,其 26.4 版本的性能提升了 26 倍,其中仅在过去一年中,就实现了约 6 倍的性能飞跃:
• 关联子查询解关联 (Correlated subquery decorrelation): 此前无法运行的查询现在可以作为普通连接来执行。
• 惰性列复制 (Lazy column replication): 通过避免在连接扇出(fan out)时产生物理行重复,查询速度提升 1.9 倍。
• 运行时过滤器 (Runtime filters): 在执行期间,构建侧的连接键可用于过滤探测侧数据,使查询速度提升 2.1 倍,并将单个查询的峰值内存从 1.24 GiB 降至 185 MiB。
• 基于统计信息的连接重排序 (Statistics-based join reordering): 优化器能够自动重排连接操作。一个涉及六表的查询,执行时间从 3903.7 秒缩短至 2.7 秒(性能提升 1450 倍),内存占用从 99.1 GiB 降至 3.9 GiB。

更新、删除、JSON、搜索与向量功能
连接操作并非 ClickHouse 唯一取得进展的领域。在大约十八个月内,ClickHouse 在开源社区中相继引入了成熟的 SQL 更新与删除功能、原生的 JSON 类型、全文搜索,以及生产级的向量搜索。
真实的 UPDATE 和 DELETE 操作 (25.7)
列式存储通常不擅长更新操作,然而,常规往往被打破。ClickHouse 25.7(2025 年 7 月)发布了标准的 SQL UPDATE 功能,该功能基于 patch parts 构建:微小的 delta parts 与数据并行写入,而非重写整个列。在一项 6 亿行基准测试中,对于批量更新,其速度比传统数据修改操作快 1700 倍,对于单行更新,速度提升最高可达 2400 倍。
真正的 JSON 类型 (25.3)
ClickHouse 25.3(2025 年 3 月)发布了 生产就绪的 JSON 类型:它是一种真正的列式 JSON,基于 Variant 和 Dynamic 类型构建,并无缝集成到所有常规查询加速机制中。25.8 版本进一步将复杂 JSON 的处理速度 提升 58 倍,同时内存消耗降低 3300 倍。在针对 10 亿文档的 JSON 基准测试(包含 10 亿个 Bluesky 事件)中,ClickHouse 运行聚合操作比 MongoDB 快 2500 倍,存储空间减少 40%,并且在 99 GB 空间内存储了 PostgreSQL 需 622 GB 才能存储的数据。
全文搜索 (26.2)
截至 26.2 版本(2026 年 3 月),ClickHouse 已具备原生的全文搜索功能。列式 倒排索引 在 25.9 版本进入实验阶段,在 25.12 版本进入 Beta 测试,并最终在 26.2 版本达到生产就绪状态。使用该索引,冷文本查询的速度提升了 7-10 倍,一个 GitHub 事件示例的扫描时间从 193 秒大幅缩短至 0.422 秒。
成功实现全文搜索是一段 耗时多年的旅程,凝聚了多方贡献。经过三次迭代后,它已成为 随处可用的最强大的全文搜索实现之一。
向量搜索趋于成熟 (25.8 及更高版本)
向量相似性索引 (HNSW) 在 25.8 版本中 达到通用可用性 (GA)。随后推出了 QBit(2025 年 10 月),这是一种独一无二的数据类型:它允许你在查询时灵活选择向量精度,而非在表设计阶段就将其固定。这项创新使得搜索速度在相同召回率下提升约 2 倍,暴力搜索内存从 6.05 GiB 降至 740 MiB,吞吐量提升 4.3 倍。
默认更快
每个版本都在底层进行引擎优化,因为我们始终致力于让每个新版本在无需用户做出任何改动的情况下,都比上一版本更快。而当您希望追求更高性能时,我们也为您准备了趁手的工具:
• 惰性物化 (Lazy materialization) (25.4 版本,默认开启):将大型列的读取操作延迟到实际需要时才执行。一个 Top-N 查询的执行时间从 219 秒缩短至 139 毫秒(提速 1,576 倍),同时 I/O 减少 40 倍,峰值内存降低 300 倍。"您无需举手之劳,便能获得显著提速。"
• 查询条件缓存 (Query condition cache) (25.3 版本,现已默认开启):为每个 granule 的每个过滤条件分配一个比特位,使得重复的仪表盘式查询能够跳过主索引无法处理的数据,在演示工作负载中实现了 13 倍的加速。
• 将投影用作二级索引 (Projections as secondary indexes) (25.6 版本,在 26.1 版本中持续完善):基于 _part_offset 的投影表现出二级索引的特性,同时无需复制数据。一个具体案例显示,扫描的行数从 3073 万减少到 16,384 行,降幅达 1,876 倍。
• CoalescingMergeTree (25.6 版本):这是一种表引擎,它为每列保留最新的非空值,从而将部分更新操作转换为简单的追加操作。此功能由社区成员 Konstantin Vedernikov 贡献。
• 并行副本 (Parallel replicas) (beta 版):该功能将单个查询分散到集群中的所有副本上,因此增加副本数量可以加快相同查询的执行速度。一个对 1000 亿行数据执行的简单 GROUP BY 查询在 414 毫秒内完成,峰值处理速度达到每秒 2418.3 亿行。
开放基准测试,开放方法论
数据库基准测试营销 (benchmarketing) 因其倾向于使用精心挑选的工作负载、隐藏配置以及无法复现的数据,早已声名狼藉。
就像 ClickHouse 引擎本身一样,其基准测试也是开源的,所有数据、模式、查询、脚本和结果都公开可用,供任何人运行和验证。多年来,这已发展成为一个完整的基准测试家族:
• ClickBench : 分析型数据库基准测试,目前已覆盖 50 多个系统,所有脚本和结果均可在 GitHub 上找到。任何人都可以提交系统参与测试,许多供应商也已这样做了。
• JSONBench : 包含十亿条 Bluesky 事件数据,用于测试数据库如何实际处理半结构化数据,也是上述 JSON 性能数据背后的基准测试。
• TPC-H : 经典的数仓基准测试,在单个节点上,ClickHouse 可以在 大约 20 秒内运行所有 22 个 SF100 查询 。在 SF10 规模下,运行整个测试套件仅需 0.009 美元。
• CostBench : 一个开放的成本效益基准测试, 于 2026 年 5 月推出 。它秉持"成本效益不应是黑盒"的原则,公开了工作负载、定价假设和原始测试结果。
• PostgresBench : 同样 采用开放透明的方式 ,针对托管式 Postgres 服务进行基准测试,基于标准 pgbench 工具构建。
经过十年的发展,这种开放精神已从代码层面延伸至方法论层面。不要仅仅相信我们提供的数据;请亲自运行并验证。
适应您的使用场景
ClickHouse 一直以来都易于上手,作为一个单一二进制文件,它可以在笔记本电脑上流畅运行。然而,它的使用方式也在不断演进,从通过代理自动运行 ClickHouse 实例,到在用户自定义函数 (UDFs) 内部运行定制代码,再到使用 Postgres 进行 ClickHouse 查询:
• clickhousectl :官方 CLI 工具,本身是一个用 Rust 编写的 Apache 2.0 项目 。通过一行 curl https://clickhouse.com/cli | sh 命令即可安装,它提供本地版本管理、项目脚手架、本地服务器管理以及 ClickHouse Cloud 控制功能。
• AI functions (26.4):直接通过 SQL 调用大型语言模型 (LLM)。aiGenerate、aiClassify、aiExtract 和 aiTranslate 等函数可与 OpenAI、Anthropic 或任何兼容 OpenAI 的端点配合使用,让您能够在查询执行过程中对行数据进行分类或丰富处理。
• 31 SQL dialects (26.3):设置 dialect = 'polyglot' 后,ClickHouse 即可通过一个源自 sqlglot 的库,接受用其他 SQL 方言编写的查询,支持从 Postgres 到 Snowflake 再到 Spark 等多种方言。
• WebAssembly UDFs (26.3, experimental):可以用任何可编译成 WebAssembly (Wasm) 的语言编写用户定义函数 (UDF),并在 Wasmtime 中沙盒化运行。
• PromQL (experimental):使用 Prometheus 的查询语言查询 ClickHouse,并与开源 ClickStack 集成。
• pg_clickhouse :一个开源的 Postgres 扩展,允许标准 Postgres 通过透明下推 (transparent pushdown) 的方式查询 ClickHouse。
建设者社区
正如我们在每篇发布公告中所言:「特别欢迎所有新贡献者!」
随着每一次发布,新的贡献者不断加入 ClickHouse 社区,共同打造世界上最快的分析型数据库。每一份贡献,无论大小,都成就了 ClickHouse 的独一无二。
如果您已是 ClickHouse 社区的长期参与者,可能会认出一些熟悉的面孔:
• Amos Bird ,一位传奇的资深贡献者,在 26.1 版本中实现了 projections 索引语法。
• Michael Jarrett 在 26.2 版本中贡献了自动 minmax 索引。此前,他在 25.12 版本中作为用户,成功验证了在 500 亿行数据表中,Top-N 查询响应时间低于 0.2 秒的优异表现。
• Jiebin Sun 在 26.4 版本中,将 uniqExact 函数在高核数机器上的执行速度提升了 3 至 15 倍。
• Yarik Briukhovetskyi 在 26.2 版本中提升了 RIGHT JOIN 和 FULL JOIN 的查询速度。
• Nihal Z. Miaji 在 25.12 版本中实现了 dictGetKeys 函数,在 26.1 版本中提升了 LowCardinality 列的 DISTINCT 查询速度,并在 26.2 版本中推出了 primes 表函数。
• Konstantin Vedernikov 贡献了一个完整的表引擎------上述提及的 CoalescingMergeTree。
在 Open House 2026 大会上,我们启动了 Community Champions Program,旨在表彰那些积极回答问题、编写集成模块以及提交 Bug 报告的贡献者,正是他们的努力维护了项目的健康发展。
迈向下一个十年
谨向所有使用并为 ClickHouse 做出贡献的朋友们:致以诚挚的感谢!
"ClickHouse 所取得的这些势头和成就,离不开社区的巨大贡献。早在 ClickHouse 品牌化、公司成立之前,正是社区成员们共同构建、探索、辩论、贡献并推动着 ClickHouse 不断向前发展。感谢你们。" - Aaron Katz, CEO, ClickHouse Inc.
如果您希望成为下一个十年征程的参与者:欢迎在 GitHub 上点星或贡献代码(https://github.com/ClickHouse/ClickHouse),加入我们的月度发布会议,或主动申请加入 Community Champions Program。
ClickHouse 的征程才刚刚开始。
ClickHouse 是面向 AI 时代打造的高性能实时分析数据库,能够以极致性能处理海量数据分析任务。凭借高并发、低延迟和云原生架构,ClickHouse 广泛应用于可观测性、数据仓库、实时分析及 AI 数据基础设施等场景。我们致力于帮助企业在公有云平台上构建安全、弹性且高性价比的实时分析与 AI 数据平台,加速释放数据价值,推动智能化创新与数字化转型。目前,Trip.com、DiDi、Meta、Sony、Netflix、Deutsche Bank、Sierra、Cloudflare 等全球领先企业均在使用 ClickHouse 支撑其关键业务和数据分析平台。