ClickHouse v25.9.7.56-stable 变更解析:40+ 项 Bug 修复与 JSON/MergeTree 稳定性改进实战指南
ClickHouse v25.9.7.56-stable 变更解析40 项 Bug 修复与 JSON/MergeTree 稳定性改进实战指南【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本指南以官方发布的 v25.9.7.56-stable 版本日志 为主体系统梳理该稳定版相对于 v25.9.6.117-stable 的 2 项功能改进、40 项用户可见 Bug 修复、3 项构建/测试改进并结合仓库源码设置定义、GenerateRandom 引擎、caseWithExpression 实现 等逐一剖析其背后的原理与影响面。读完本文你将能判断该版本修复是否影响自己的生产环境、理解每个修复对应的配置开关与升级注意事项并学会用仓库内测试用例验证这些修复。一、版本概览与升级定位v25.9.7.56-stable 是 ClickHouse 25.9 系列的第三个稳定补丁版本构建提交为f805515dfb0对比基线为 v25.9.6.117-stableff2a1965ca6。从版本日志的结构看本次发布的核心特征Bug Fix用户可见行为修复约 40 项是本版绝对主体且高度集中于JSON/Dynamic/Variant 动态类型体系、MergeTree 家族、聚合与序列化兼容性三个领域Improvement 2 项分别涉及读取 JSON 列样本时的线程池饥饿问题以及聚合/排序溢写spill to disk时的内存检测稳健性Build/Testing/Packaging Improvement 3 项含一个安全相关的依赖升级libssh。按照 ClickHouse 版本策略稳定版stable补丁只做向后兼容的修复不引入破坏性变更。如果你的生产集群正在使用 25.9 系列且大量使用 JSON/Dynamic 列、Nested 结构、投影projection或分布式 DDL本版本值得优先规划升级。二、Improvement两项底层稳健性改进2.1 尊重merge_tree_use_prefixes_deserialization_thread_pool消除 JSON 列样本读取的线程池饥饿对应变更PR #91208回基于 #91250JSON 列在 Wide parts 中往往包含大量子列subcolumns。读取列样本column samples时旧实现无条件使用前缀反序列化线程池在子列数量很大且线程池被占满的场景下可能造成线程池饥饿thread pool starvation拖慢甚至阻塞其他任务。本次修复让样本读取尊重merge_tree_use_prefixes_deserialization_thread_pool设置。在源码中该设置定义于 src/Core/Settings.cpp#L1756-L1758DECLARE(Bool, merge_tree_use_prefixes_deserialization_thread_pool, true, R( Enables usage of the thread pool for parallel prefixes reading in Wide parts in MergeTree. Size of that thread pool is controlled by server setting max_prefixes_deserialization_thread_pool_size. ))关键信息默认值true即默认仍使用线程池并行读取前缀控制范围仅影响 MergeTree 表家族中Wide parts的并行前缀读取配套服务端设置线程池大小由服务器级设置max_prefixes_deserialization_thread_pool_size控制落地路径该设置在 MergeTreeIOSettings.cpp#L142 中被读取为use_prefixes_deserialization_thread_pool再传入后续 IO 逻辑。运维建议如果线上观察到 JSON 高子列数表的 SELECT 出现线程饥饿、任务排队异常可尝试将该设置置为false绕过线程池牺牲部分并行度换取稳定性或在确认列样本读取压力大的前提下调整max_prefixes_deserialization_thread_pool_size。2.2 聚合/排序溢写时更稳健的查询内存检测对应变更PR #92500回基于 #92567聚合aggregation和排序sorting在内存超限时会选择将中间结果溢写spill到磁盘。旧实现对当前查询到底用了多少内存的探测在某些路径下不够健壮可能误判内存水位导致溢写决策错误。本次改进强化了查询内存使用的检测逻辑改动由 Azat Khuzhin 提交。该改动影响所有依赖max_bytes_before_external_sort/max_bytes_before_external_group_by等溢写阈值设置的查询——内存检测越准确溢写时机越合理既能避免 OOM也能避免过早溢写带来的性能损耗。对于超大 GROUP BY 或 ORDER BY 任务的用户升级后可观察溢写行为是否更符合预期。三、Bug Fix 分类深度解析以下按技术领域归类梳理全部用户可见修复。修复编号为官方 PR 号可在 ClickHouse 仓库中检索对应改动与测试。3.1 JSON / Dynamic / Variant 动态类型体系本版修复最密集领域25.9 系列把 JSON 作为一等动态类型随之而来的边界问题在本版集中修复共约 11 项修复现象影响场景PR #88879通过ALTER ADD COLUMN添加的非物化Nested(Tuple(...))列处理错误issue #83133ALTER 动态加嵌套结构PR #90302Compact parts中读取 JSON 子列可能报CANNOT_READ_ALL_DATAissue #90264Compact 存储格式的表查询PR #90430从HTTP 参数解析 JSON/Dynamic/Variant 值出错issue #88925HTTP 接口参数化查询PR #90816JSON 的shared data 与 dynamic paths状态可能不一致导致逻辑错误与异常结果写入后立即读取PR #90907读取 JSON/Dynamic/Variant 列时内存占用过高大 JSON 列扫描PR #91014禁用write_marks_for_substreams_in_compact_parts时path 同时存在于 shared data 与 dynamic paths 的子对象读取 bug定制标记写入配置PR #91040mutations 中从物化列读取动态子列失败issue #90653ALTER UPDATE/DELETE涉及物化 JSON 列PR #91151JSON 列在Summing/Aggregating/Coalescing MergeTree合并时产生意外 dynamic paths三种特殊 MergeTree 引擎PR #91152Compact parts 写入时动态结构不一致极端情况导致段错误segfaultCompact 格式写入PR #91270向CoalescingMergeTree写入Tuple(JSON/Dynamic)LowCardinality组合列失败issue #91215CoalescingMergeTree 表PR #90907 相关JSON 子列样本读取线程池饥饿见 2.1高子列数 JSON 表这些修复大多由 Pavel KruglovAvogar主导说明 25.9 的 JSON 动态类型在 Compact parts、物化列、特殊 MergeTree 引擎等边界路径上经过了一轮系统性加固。凡是使用JSON/Dynamic/Variant类型、Nested结构或SummingMergeTree/AggregatingMergeTree/CoalescingMergeTree的用户应重点回归测试写入、合并、mutations 三类操作。3.2 MergeTree 家族与投影PR #88350修复存在UNION时错误移除未使用投影列issue #88180。投影projection优化与 UNION 组合时可能误删列导致错误结果PR #90288修复部分聚合投影优化查询PR #90666修复LowCardinality列用作分区键时的类型转换错误issue #89412PR #90927修复SummingMergeTree对NestedLowCardinality列的聚合PR #91142修复旧 parts 中通过ALTER ADD COLUMN添加列的延迟物化lazy materializationPR #91396在合并算法中从表头header移除 Sparse 列issue #91377避免稀疏列在合并时引发不一致PR #91573禁止对 Object Storage 表引擎执行 ALTER。此前ALTER ADD PROJECTION可能导致服务器无法重启——因为 Object Storage 引擎不支持投影。该修复属于防御性护栏升级前若曾对这类表执行过 ALTER应检查数据目录一致性。3.3 聚合、序列化与内存PR #90880重点修复String 聚合状态的内存序列化兼容性。旧实现下不同版本实例执行同一聚合查询可能因序列化差异产生重复结果。新序列化默认开启可通过设置serialize_string_in_memory_with_zero_byte控制。该设置定义于 src/Core/Settings.cpp#L8883-L8885DECLARE(Bool, serialize_string_in_memory_with_zero_byte, true, R( Serialize String values during aggregation with zero byte at the end. Enable to keep compatibility when querying cluster of incompatible versions. ))默认true跨版本混合集群滚动升级期间如遇聚合结果不一致可检查该开关。它被 AggregatingStep、CubeStep、RollupStep、MergingAggregatedStep、TTL 聚合等路径引用覆盖范围广PR #91664修复带additional filter 的 JOIN 内存占用升高issue #91011PR #92500Improvement见 2.2 节聚合/排序溢写内存检测更稳健。3.4 权限、安全与凭据展示PR #90765修复 named collections 的**隐藏密钥hidden secrets**未遵循display_secrets_in_show_and_select与format_display_secrets_in_show_and_select设置的问题避免密钥在SHOW/SELECT结果中被意外展示PR #90922修复 **wildcard grants 的部分撤销partial revoke**检查并补充更多测试PR #90928修复wildcard revoke 误伤全局级权限的问题——此前撤销一个通配授权可能意外撤掉CREATE USER等全局权限PR #90985将libssh 从 0.9.8 升级到 0.11.3修复安全公告 GHSA-98qw-prqm-9f4p 涉及的漏洞属于 Build/Packaging 类改进但对使用 SSH 相关集成如ssh表函数的用户有安全意义。运维提示使用 named collections 且配置了secret字段的用户升级后应验证SHOW/SELECT输出中密钥是否按预期隐藏。3.5 函数与类型修复PR #88157修复GenerateRandom 引擎在非字面量参数下崩溃——由返回LOGICAL_ERROR改为返回BAD_ARGUMENTS并附清晰报错信息。从源码看StorageGenerateRandom.cpp#L961-L994 中引擎参数通过evaluateConstantExpressionAsLiteral求值最多接受三个参数random_seed, max_string_length, max_array_length默认值分别为随机、10、10。当传入非字面量表达式时此前的类型断言会触发内部逻辑错误崩溃现改为对用户友好的参数错误PR #90013修复文本格式下从字符串推断非法 DateTime64 值的边界情况issue #89368PR #90490修复toDateTimeOrNull对负参数返回 NULL的 bugPR #90909修复base58Decode函数的缓冲区分配问题PR #91420修复dictGetDescendants因 NULL 崩溃——字典类型声明了 Hierarchy 支持但没有任何列为HIERARCHICAL时issues #92026/#92121PR #91524修复remote函数使用星号参数asterisks引发的逻辑错误issue #90568PR #92351修复caseWithExpression函数参数中出现Nothing类型时的逻辑错误issue #85354。该函数在 src/Functions/caseWithExpression.cpp#L58 要求参数数量为偶数(expr, when1, then1, ..., else)否则抛BAD_ARGUMENTS本次修复针对Nothing空集类型混入分支值的极端类型场景PR #91827修复RecursiveCTEChunkGenerator的LOGICAL_ERRORPR #92210修复 format 场景下的UDF 替换。3.6 复制、DDL、分布式与缓冲区引擎PR #90556 / PR #92223DDLWorker::markReplicasActive 本地主机检查优化。旧逻辑在本地地址解析失败、而集群中存在 host IDs 时直接抛异常导致副本活性标记失败现改为先打印警告日志若确认无本地主机则抛异常触发重试#90556后续版本进一步将无活跃主机但 remote_servers 含 host_ids场景降级为仅警告不抛异常#92223。对 DNS 偶发抖动环境下的分布式 DDL 稳定性有实际意义PR #91304修复SYSTEM DROP FILESYSTEM CACHE ON CLUSTER在集群上的执行问题PR #91386修复 async insert 队列刷到远端服务器时异步语义丢失的问题——即使对用户设置了async_insert1队列 flush 到远端时仍被强制同步执行本次修复让该设置生效PR #90947修复Azure blob 列表可能死循环的问题PR #90892修复 Buffer 表在频繁 INSERT 下后台 flush的行为异常PR #91000修复 Buffer 表过度 flush问题——旧实现会空耗 CPU 并产生海量日志PR #90412修复单条 ALTER 中同时重命名和修改同一 Nested 列时的逻辑错误issue #90406PR #90505修复LowCardinality(Bool/Date32)以Arrow 格式输出时的逻辑错误issue #83883PR #91396Sparse 列从合并表头移除见 3.2。四、Build / Testing / Packaging 改进PR #90985libssh 0.9.8 → 0.11.3安全修复见 3.4PR #92009修复00906_low_cardinality_cache的flaky 测试PR #92404Rust 构建包装器支持在chcache与sccache之间任选CI 类NOT FOR CHANGELOG#89098/#90950 修复 fork 场景下版本 tweak 计算#91094 适配 runc 1.3.3 的 tmpfs 权限变更#92544 使用修复版本重新构建。五、升级与回归验证建议综合以上变更规划升级到 v25.9.7.56-stable 时建议重点回归以下场景JSON/Dynamic/Variant 数据面执行覆盖写入 → SELECT → 合并 → mutation → 再次读取的完整链路尤其使用 Compact parts 与物化 JSON 列的表特殊 MergeTree 引擎SummingMergeTree / AggregatingMergeTree / CoalescingMergeTree 上的 JSON 列合并投影与 UNION带投影优化的查询与 UNION 组合场景跨版本滚动升级期间关注聚合结果一致性serialize_string_in_memory_with_zero_byte建议同版本内完成升级窗口分布式 DDL 与复制在 DNS 有波动的环境验证ON CLUSTERDDL 与副本活性标记日志权限回归named collections 密钥展示、wildcard 授权/撤销行为安全依赖确认构建产物中 libssh 已更新至 0.11.x。相关测试与配置可在仓库内进一步检索JSON 动态类型相关测试位于 tests/queries 与 tests/integration各项设置在 src/Core/Settings.cpp 中均有默认值与说明GenerateRandom 引擎实现见 src/Storages/StorageGenerateRandom.cppcaseWithExpression 实现见 src/Functions/caseWithExpression.cpp。六、总结v25.9.7.56-stable 是一个典型的深水区修补稳定版表面无新功能实质完成了 JSON 动态类型体系在 Compact parts、物化列与特殊 MergeTree 引擎上的系统性加固并修复了投影 × UNION、跨版本聚合序列化、通配权限撤销等一批高影响边界问题。对于 25.9 系列用户该版本是值得跟进的重要补丁升级前请对照本文第三节的领域清单完成针对性回归。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Prettier 文件监听实战:用 onchange 实现保存即格式化的自动 watch 工作流

Prettier 文件监听实战:用 onchange 实现保存即格式化的自动 watch 工作流

Prettier 文件监听实战:用 onchange 实现保存即格式化的自动 watch 工作流 【免费下载链接】prettier Prettier is an opinionated code formatter. 项目地址: https://gitcode.com/gh_mirrors/pr/prettier Prettier 官方 CLI 本身并不内置"监听文件变化…

2026/9/22 22:50:39 阅读更多 →
Cursor 添加 MCP 服务器,模型 Base URL 指向 TaoToken 接口

Cursor 添加 MCP 服务器,模型 Base URL 指向 TaoToken 接口

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/22 12:14:31 阅读更多 →
mcporter serve --stdio 桥接,把 Codex 的 Base URL 改到 TaoToken

mcporter serve --stdio 桥接,把 Codex 的 Base URL 改到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/22 12:14:31 阅读更多 →

最新新闻

5个维度一文搞懂游戏评测体系避坑指南

5个维度一文搞懂游戏评测体系避坑指南

5个维度一文搞懂游戏评测体系避坑指南 官方文档太长抓不住重点,这是做技术选型的常态。你想搞懂【游戏评测】背后的数据架构,翻遍 MDN Web Docs…

2026/9/23 7:09:49 阅读更多 →
Skill Seekers 完整指南:把文档、GitHub 仓库与 PDF 一键转化为可用的 AI Skill

Skill Seekers 完整指南:把文档、GitHub 仓库与 PDF 一键转化为可用的 AI Skill

Skill Seekers 完整指南:把文档、GitHub 仓库与 PDF 一键转化为可用的 AI Skill 【免费下载链接】Skill_Seekers Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection 项目地址: https://gi…

2026/9/23 7:09:49 阅读更多 →
基于NE5532运放的前馈式主动降噪耳机DIY:电路设计与调试全流程

基于NE5532运放的前馈式主动降噪耳机DIY:电路设计与调试全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/23 7:09:49 阅读更多 →
OpenZFS ZFS Test Suite 完全指南:构建、运行与自定义测试用例实战

OpenZFS ZFS Test Suite 完全指南:构建、运行与自定义测试用例实战

操作系统 【免费下载链接】zfs OpenZFS on Linux and FreeBSD 项目地址: https://gitcode.com/gh_mirrors/zf/zfs 点击查看 免费下载 导读 ZFS Test Suite(ZTS)是 OpenZFS 项目自带的端到端测试框架,覆盖 zfs/zpool 命令行、ARC…

2026/9/23 7:09:49 阅读更多 →
一文搞懂诺基亚7210高频面试题:别再瞎背了

一文搞懂诺基亚7210高频面试题:别再瞎背了

一文搞懂诺基亚7210高频面试题:别再瞎背了 看了一堆教程还是不会写项目?是不是觉得那些高大上的架构理论离自己太远,手一抖代码就崩?别慌,今天咱们不整虚的,直接 一文搞懂…

2026/9/23 7:09:49 阅读更多 →
标准IO与系统IO:从缓冲机制到性能优化的全面解析

标准IO与系统IO:从缓冲机制到性能优化的全面解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/23 7:08:48 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →