本文介绍云数据库ClickHouse26.3 LTS社区兼容版的主要变更内容,包括新特性、性能优化和改进。
版本概述
阿里云ClickHouse社区兼容版正式发布全新的长期支持版本26.3 LTS。作为继25.3 LTS之后的又一年度大版本,26.3 LTS聚焦流批一体数据湖、原生倒排索引、高并发写入稳定性、复杂分析查询优化与开放生态扩展,旨在为您提供更高效、更稳定的实时分析能力。
升级亮点速览
|
能力方向 |
核心提升 |
典型业务价值 |
|
数据湖生态 |
原生Apache Paimon支持、DataLakeCatalog自动挂载 |
湖仓一体无缝查询,Flink CDC入湖场景即查即用 |
|
原生倒排索引 |
倒排索引GA,日志/文本检索性能提升7~10倍 |
替代外部搜索引擎,降低存储与运维成本 |
|
数据湖与OSS加速 |
Parquet页脚SLRU缓存、Iceberg元数据预取 |
I/O密集型查询与OSS外部表扫描2x~5x提速 |
|
复杂查询优化 |
物化CTE、全类型JOIN智能重排序 |
复杂报表与多维分析SQL执行效率显著提升 |
|
高维数据与宽表TTL |
分桶Map点查提升2~49倍;TTL垂直合并 |
降低点查延迟与后台清理的内存开销 |
|
开放生态 |
31种SQL方言兼容 |
跨引擎SQL业务代码即迁即用 |
数据湖生态重大突破:Apache Paimon与统一Catalog编目
从25.3到26.3 LTS,ClickHouse数据湖分析能力实现了跨越式升级,关键能力包括:
-
原生Apache Paimon支持:26.3 LTS提供原生的
paimon表函数与Paimon表引擎(含集群并行查询paimonCluster),支持直接对存储在OSS、S3或HDFS上的Paimon表进行高效只读分析,匹配Flink CDC入湖场景。 -
DataLakeCatalog自动化挂载:支持将外部Metastore(如Hive Metastore、AWS Glue、阿里云DLF等)直接挂载为ClickHouse数据库。引擎会自动识别Catalog内的Iceberg、Paimon、Delta Lake及Hudi表,无需手动建表即可直接查询。
-
数据湖查询多维加速:
-
Parquet页脚SLRU缓存:默认启用
use_parquet_metadata_cache = 1,重复查询相同Parquet文件时,I/O读请求最高可减少50%。 -
Iceberg元数据异步预取:通过
iceberg_metadata_async_prefetch_period_ms在后台保持本地元数据新鲜度,摆脱远程Catalog瓶颈。 -
S3Queue增量高效拉取:有序模式下改用
StartAfter语义,减少ListObjects频率,降低OSS API成本并缩短延迟。
-
全文检索重磅升级:原生倒排索引生产可用
26.3 LTS的原生倒排索引与全文检索能力正式达到Production-Ready(GA)状态。
-
性能成倍跃升:在文本模糊匹配与关键词检索场景中,启用倒排索引后冷查询性能可提升7~10倍。在典型日志查询测试集(如GitHub Events)中,复杂检索时延从193秒降至0.42秒。
-
无缝兼容SQL语法:无需引入外部Elasticsearch或第三方检索插件,直接通过
INDEX idx_text content TYPE inverted建立索引,即可自动加速HAS()、LIKE / ILIKE以及JSON字段提取检索。 -
低存算成本:基于ClickHouse独特的列存倒排结构,索引体积大幅小于传统搜索引擎,极大降低了日志、Trace与文本分析场景的存储成本。
计算与优化器
物化CTE(MATERIALIZED CTE)
26.3 LTS引入了物化CTE语法。通过MATERIALIZED关键字,ClickHouse将CTE的计算结果暂存至临时内存表中,避免冗余计算,大幅提升复杂报表与多维分析SQL的执行效率。
示例:
SET enable_materialized_cte = 1;
WITH top_users AS MATERIALIZED (
SELECT user_id, count() AS cnt
FROM events
GROUP BY user_id
ORDER BY cnt DESC
LIMIT 1000
)
SELECT *
FROM top_users
INNER JOIN (SELECT user_id FROM top_users WHERE ...) ON ...;
全类型JOIN智能重排序
26.3 LTS的基于代价的优化器(CBO)能力进一步延伸,除了标准的INNER JOIN和LEFT/RIGHT JOIN外,现已全面支持对LEFT ANTI JOIN、SEMI JOIN以及FULL JOIN进行自动Build/Probe侧交换。优化器会根据表统计信息,自动将数据量较小的一侧构建为Hash Table,有效避免因手动SQL顺序不当导致的内存溢出(OOM)。
存储引擎与数据类型
分桶Map(Sharded Map)
针对使用Map类型保存用户画像标签、动态特征的场景,26.3 LTS引入了分桶物理序列化布局。通过将Map内部的数据按Key进行Hash分桶存储,在进行单Key查找时,查询效率可提升2~49倍。
示例:
CREATE TABLE user_profiles (
id UInt64,
attributes Map(String, UInt64)
) ENGINE = MergeTree
ORDER BY id
SETTINGS map_serialization_version = 'with_buckets', max_buckets_in_map = 32;
宽表TTL清理:垂直合并(Vertical Merge)
26.3 LTS正式为TTL DELETE引入了垂直合并算法:优先对主键与TTL列进行合并过滤,无需读取无关的宽列数据,显著降低后台清理数据时的I/O与内存开销。
自适应浮点数压缩算法(ALP Codec)
全新的浮点数无损压缩编码CODEC(ALP, ZSTD)正式上线。ALP(Adaptive Lossless floating-Point)专门针对工业监控、时序指标等场景中的Float32/Float64数据进行了结构化压缩优化,压缩比与解压速度均优于经典的Gorilla编码。
开放生态:跨引擎SQL方言兼容(Polyglot)
通过集成开源Polyglot解析库,26.3 LTS原生支持包含Snowflake、BigQuery、PostgreSQL、Spark、Presto、DuckDB在内的31种外部数据库SQL方言。用户只需设置:
SET dialect = 'polyglot', polyglot_dialect = 'snowflake';
即可直接复用现有的SQL业务代码。
关键性能优化
查询执行与优化器
-
默认启用查询条件缓存、表达式JIT编译以及JOIN运行时过滤器,显著降低重复扫描与大表JOIN开销。
-
RIGHT / FULL JOIN改用ConcurrentHashJoin,部分场景性能提升最多2倍;新增JOIN顺序优化,根据统计信息自动重排多表JOIN。
-
主键与分区键索引裁剪能力扩展:主键支持任意确定性表达式用于数据跳过,分区键被确定性函数链包裹时仍可分区裁剪。
-
ORDER BY ... LIMIT N查询可通过跳过索引与动态阈值过滤器显著减少扫描行数。
存储引擎与数据跳过
-
默认启用Parquet reader v3,支持页级过滤下推与PREWHERE;数据湖读取按处理线程数自动调整管道,多核机器上提升约40倍。
-
默认启用读取期间流式跳过索引过滤;文本索引支持更多谓词形式并可用于PREWHERE。
-
重度分区裁剪场景下,10K+ part表的SELECT查询速度提升最多8倍;Iceberg表支持PREWHERE优化与异步元数据预取。
分布式与并行执行
-
默认启用并行分布式INSERT SELECT,在每个分片上独立执行;分布式IN子查询自动添加DISTINCT,显著减少分片间临时表传输。
-
分布式索引分析支持SharedMergeTree / 共享存储场景,可按part数量与索引大小触发;并行副本支持懒物化并改进负载分配,减少长尾延迟。
函数与索引
-
LIKE / 正则表达式自动重写为更高效的实现并默认启用;StringZilla加速大小写敏感字符串搜索;SIMD动态分发加速逻辑函数与布尔列转换。
内存、可观测性与网络
-
mark、未压缩和页缓存使用独立jemalloc arena降低碎片,jemalloc脏页在独立线程中清理;系统日志表新增minmax / bloom_filter索引加速排查。
-
分布式查询中block的序列化与压缩可卸载到管道线程,提升大数据量传输效率。
性能基准:ClickBench版本对比
根据官方ClickBench版本基准测试(Cold Queries视角),26.3 LTS相比上一个LTS版本25.3,在综合性能表现上取得了持续提升:
|
测试维度 |
26.3 LTS相对25.3 LTS提升 |
|
冷查询综合时延 |
总体耗时降低8%~15% |
|
数据湖与存储扫描 |
I/O密集型查询与OSS外部表扫描性能2x~5x提速 |
|
宽表TTL整理消耗 |
峰值内存占用下降超过40% |
|
文本/日志检索 |
倒排索引加持下,复杂检索时延从193秒降至0.42秒 |
|
高维Map点查 |
分桶Map单Key查找效率提升2~49倍 |
实用小功能
26.3 LTS还包含了一系列提升开发与运维体验的功能:
-
自然排序(naturalSortKey):支持按照人类直觉对包含数字的字符串排序,例如使
file2.txt正确排在file10.txt前面。 -
树状EXPLAIN输出:执行
EXPLAIN pretty=1, compact=1即可获取结构清晰、可视化效果佳的执行计划树。 -
不可用分片容错控制:提供
max_skip_unavailable_shards_num与max_skip_unavailable_shards_ratio参数,绑定控制集群大表查询时跳过故障节点的比例。
升级建议
升级前准备
-
克隆/测试环境验证:先在克隆环境或测试环境部署新版本,评估版本变更对现有配置和查询的影响。
-
检查依赖兼容性:确认客户端驱动、第三方工具与新版本的兼容性。
重点关注事项
-
实验性功能验证:物化CTE及Polyglot方言在当前版本标注为Experimental,建议在生产环境广泛应用前先在测试集群进行业务验证。
-
性能回归测试:升级后对比关键查询的执行时间,确保Parquet缓存、倒排索引、JOIN重排序等优化生效。
-
监控告警调整:根据新增指标和变更调整监控阈值。
总结
ClickHouse 26.3 LTS是一个兼具广度与深度的年度大版本:
-
在数据湖与开放生态层面,原生Paimon支持与31种SQL方言兼容打通了湖仓一体与跨引擎复用的关键路径。
-
在查询与分析层面,倒排索引GA、物化CTE、JOIN重排序与分桶Map显著拓展了ClickHouse在日志检索、复杂分析和高维点查场景的能力边界。
-
在稳定性与成本层面,TTL垂直合并与ALP Codec从数据清理到存储压缩全方位降低了运维复杂度。
阿里云ClickHouse团队已完成社区26.3 LTS版本的云上适配与全量兼容性验证。您可以在阿里云ClickHouse控制台快速创建26.3 LTS实例或将现有实例升级至最新版本,体验更高效、更稳定的实时分析能力。