ClickHouse v26.1.11.9-stable 修复解析:查询解析、CPU 调度、文件缓存与可刷新物化视图的稳定性改进
数据库OLAP列式数据库大数据实时分析数据分析【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址https://gitcode.com/GitHub_Trending/cli/ClickHouse点击查看免费下载本文围绕 ClickHouse 官方稳定版 v26.1.11.9-stable提交1784404a5ac相对上一稳定版 v26.1.10.2-stable提交ebbf25cf806的 7 项变更展开逐一解读 6 个用户可见的 Bug 修复与 1 项构建/打包改进。读者可以借此理解ASTColumnsExceptTransformer、StringSearcher、CPU Lease 调度器、文件系统缓存 SLRU 策略、Named Collection 指标、行策略Row Policy与SYSTEM WAIT VIEW的底层实现与边界场景从而在升级后更好地规避同类问题、理解排查思路。版本变更总览本次发布属于 26.1 分支的补丁迭代全部变更均以 Backported回溯移植方式进入本版本即修复先合入主分支再移植到 26.1 稳定分支。变更清单如下类别变更内容关联 PRBug Fix修复ASTColumnsExceptTransformer::transform中的 LOGICAL_ERROR 异常#99119Bug Fix修复StringSearcher.h中的未初始化值使用use-of-uninitialized-value#100225Bug Fix修复 CPU Lease 调度器中等待定时器超过 worker 线程生命周期导致的 use-after-free#101761Bug Fix修复文件系统缓存 26.1 的 SLRU 竞态避免空间预留逻辑错误#101991Bug Fix修复NamedCollection的CurrentMetric被CREATE NAMED COLLECTION IF NOT EXISTS错误膨胀、启动时未初始化的问题#102598Bug Fix修复行策略row policy在特殊情况下抛 Not found column in block 异常#102648Build/Testing升级依赖 OpenSSL 至 3.5.6#102606下面按功能域分组展开。查询解析与执行层修复ASTColumnsExceptTransformer的 LOGICAL_ERROR在SELECT COLUMNS(regexp) EXCEPT ...这类列变换Column Transformers场景中ASTColumnsExceptTransformer::transform可能抛出LOGICAL_ERROR异常。该逻辑位于 src/Parsers/ASTColumnsTransformers.cpp其中定义了APPLY、EXCEPT、REPLACE等列变换器并通过 src/Interpreters/applyColumnsTransformer.cpp 在查询规范化/分析阶段对COLUMNS()表达式展开。此次修复PR #99119针对变换器在处理嵌套或特殊列集合时的内部状态一致性做了加固避免在展开EXCEPT子句时产生内部断言级别的错误。从源码结构看ASTColumnsExceptTransformer的transform会基于输入列集合做集合差运算若输入列集合与预期状态不一致例如同时叠加APPLY前缀或 lambda 时就可能触发逻辑错误这也是本次补丁的核心目标。StringSearcher.h的未初始化值使用StringSearcher是 ClickHouse 字符串匹配的基础设施位于 src/Common/StringSearcher.h被LIKE/position/countSubstrings/replaceAll等大量函数间接使用参见 src/Functions/PositionImpl.h、src/Functions/ReplaceStringImpl.h。该头文件中的CaseSensitiveStringSearcher在短 needle长度 32 字节场景下采用简单循环逐字节比较避免函数调用与 mask 准备工作在USE_MULTITARGET_CODE与 AVX2/NEON 环境下还会使用 SIMD 加速路径。本次修复PR #100225消除了一处未初始化值的使用在特定输入如 needle 与 haystack 长度关系特殊、或 SIMD 路径读取越界数据下比较逻辑可能读到未初始化的栈/内存值从而产生不可预测的匹配结果在 SanitizerMSan构建下会直接暴露。修复后匹配路径在所有输入组合下均使用确定值。行策略的 Not found column in block 异常行策略Row Policy用于对表访问按行做细粒度过滤其条件表达式在查询执行时被注入到读取阶段。当策略条件中的列在某些特殊查询形态下如子查询、PREWHERE优化、物化列等未随数据块一起传递时会抛出 Not found column in block 异常。本次修复PR #102648确保策略所需列在块处理链中始终可用从列注入与块校验两方面规避了偶发失败。调度与缓存层修复CPU Lease 调度器的 use-after-freeCPU 调度资源管理Workload Scheduling是 26.x 引入的重要能力核心实现位于 src/Common/Scheduler/CPULeaseAllocation.cpp 与 src/Common/Scheduler/CPULeaseAllocation.h。调度器以租赁Lease为单位为线程分配 CPU 配额CPULeaseAllocation::Lease持有一个slot_id并引用父分配对象析构时通过parent-release(*this)归还配额。该模块还依赖ProfileEvents::Counters统计ConcurrencyControlWaitMicroseconds、ConcurrencyControlPreemptions等指标。本次修复PR #101761针对的正是这类对象生命周期问题当 CPU Lease 调度器的等待定时器wait timer存活时间超过其引用的 worker 线程线程退出后ProfileEvents::Counters被销毁时定时器回调会访问已释放的内存造成 use-after-free 崩溃。修复的核心是确保定时器在持有计数器引用的线程结束前被取消或解除引用从而切断悬挂引用。从 src/Processors/Executors/Runtime/PipelineExecutor.cpp 对 CPULeaseAllocation 的使用来看该路径覆盖 INSERT 与查询执行线程崩溃影响面包括常规查询与写入负载。文件系统缓存 SLRU 竞态ClickHouse 的本地文件系统缓存filesystem_cache对应local_filesystem_read_method与缓存配置在 26.1 默认使用 SLRUSegmented LRU淘汰策略实现位于 src/Common/SLRUCachePolicy.h 与 src/Interpreters/FileCache/SLRUFileCachePriority.cpp。与普通 LRU 不同SLRU 将缓存分为保护段protected与试用段probationary仅被访问过一次的条目放在试用段容易被顺序扫描淘汰被访问多次的条目升级到保护段避免被大范围扫描一次性逐出。max_protected_size默认取总容量的一半见 src/Common/SLRUCachePolicy.h。本次修复PR #101991解决的是一个并发竞态并发读取同一缓存段时SLRU 优先级状态机可能从Active被错误地置为Evicting导致空间预留space reservation逻辑错误在 Debug 构建下会触发断言Previous state is Evicting, but expected state to be Active while setting Evicting flag for segment:offset (state: Evicting)。修复后段状态切换在锁内严格校验前序状态消除了并发下缓存容量记账偏差与断言失败。相关的段状态管理可参见 src/Interpreters/FileCache/FileSegment.cpp 与 src/Interpreters/FileCache/Guards.h。系统管理与运维层修复Named Collection 的 CurrentMetric 指标错误Named Collection 允许把一组连接参数如 URL、认证信息集中命名并在建表/函数调用时复用。本次修复PR #102598解决了两类指标问题对已存在的 collection 执行CREATE NAMED COLLECTION IF NOT EXISTS时CurrentMetric计数被重复累加膨胀从配置文件或 SQL 存储system.named_collections加载的 collection 在启动阶段没有初始化该指标导致统计缺失。该指标用于跟踪当前活跃的命名集合数量膨胀或缺失都会干扰监控告警。修复关闭 issue #102507统一了三条创建路径DDL 新建、配置文件加载、SQL 存储加载的指标初始化逻辑使IF NOT EXISTS在命中已有对象时不再重复计数。SYSTEM WAIT VIEW永久挂起SYSTEM WAIT VIEW用于等待可刷新物化视图Refreshable Materialized View完成当前刷新周期其等待逻辑集中在 src/Storages/MaterializedView/RefreshTask.cpp 的RefreshTask::wait约第 630 行起。该函数的注释明确指出其等待逻辑需要处理多种复杂情形如SYSTEM REFRESH VIEW后等待指定刷新、视图被 DROP 等。此前存在一个挂起场景当WAIT VIEW正在进行时若视图被 DROP后台刷新任务被停用deactivate后不再通知条件变量导致wait()永久阻塞。本次修复PR #102681在 DROP 路径上增加了唤醒机制RefreshTask析构/停用时会调用wait_cv.notify_all()唤醒所有阻塞在wait()中的线程使其感知到视图已不存在并抛出TABLE_IS_DROPPED而不是无限期等待参见 src/Storages/MaterializedView/RefreshTask.cpp 附近对 DROP 时RefreshSet移除与唤醒的注释说明。修复后DDL 与等待命令之间不再互相死锁。构建与打包改进OpenSSL 3.5.6本版本将内置的 OpenSSL 依赖升级到 3.5.6。ClickHouse 通过contrib/openssl第三方源码子模块与 contrib/openssl-cmake/CMakeLists.txt 集成了 OpenSSL该 CMake 脚本会从common/include/openssl/opensslv.h中解析OPENSSL_VERSION_STR宏并输出版本号同时将fipsmodule.conf等运行时配置文件安装到 ClickHouse 的 etc 目录。升级 3.5.6 属于安全与稳定性跟进涉及 TLS 连接、HTTP/HTTPS 接口与各类外部存储认证等加密路径建议在升级本版本后重新验证对外 TLS 服务的握手与证书链行为。升级建议v26.1.11.9-stable 属于 26.1 分支的补丁版本建议在测试环境先行验证后再对生产节点滚动升级。若生产环境使用文件系统缓存并曾在 Debug 构建下观察到 SLRU 断言Evicting状态相关本次 SLRU 竞态修复PR #101991值得重点关注。若曾遇到SYSTEM WAIT VIEW命令偶发卡死或 Named Collection 相关监控指标异常可直接受益于本次对应修复。开启 Workload SchedulingCPU 调度且线程生命周期与定时器交互复杂的场景建议升级以规避潜在的 use-after-free 崩溃。升级后建议通过system.named_collections、system.metricsConcurrencyControl 系列指标与行策略相关的system.row_policies做一次健康检查确认计数与策略行为符合预期。延伸阅读完整的变更历史记录在 docs/changelogs 目录下可按版本号检索对应的发布说明可刷新物化视图的刷新任务实现 src/Storages/MaterializedView/RefreshTask.cpp字符串搜索基础设施 src/Common/StringSearcher.h、src/Common/Volnitsky.hSLRU 缓存策略 src/Common/SLRUCachePolicy.hCPU 租赁分配器 src/Common/Scheduler/CPULeaseAllocation.h。赞分享数据库OLAP列式数据库大数据实时分析数据分析【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址https://gitcode.com/GitHub_Trending/cli/ClickHouse点击查看免费下载相关推荐ClickHouse v25.6.10.16-stable 发布解析Keeper 递归删除优化、物化视图修复与稳定性改进ClickHouse v25.6.10.16 stable 发布解析Keeper 递归删除优化、物化视图修复与稳定性改进 本文基于 ClickHouse 官方数据库OLAP列式数据库大数据实时分析数据分析ClickHouse v26.1.3.52-stable 版本更新详解S3Queue 元数据缓存、Variant/JSON 修复与分布式查询稳定性改进ClickHouse v26.1.3.52 stable 版本更新详解S3Queue 元数据缓存、Variant/JSON 修复与分布式查询稳定性改进 本文基数据库OLAP列式数据库大数据实时分析数据分析ClickHouse v25.12.4.35-stable 版本解析稳定性修复、去重语义重构与可刷新物化视图备份策略ClickHouse v25.12.4.35 stable 版本解析稳定性修复、去重语义重构与可刷新物化视图备份策略 v25.12.4.35 stable 是数据库OLAP列式数据库大数据实时分析数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DLT 5222-2005在变电设计中的导体与电器选型要点

DLT 5222-2005在变电设计中的导体与电器选型要点

简介:《DLT 5222-2005 导体和电器选择设计技术规定》是电力行业重要的设计标准,面向电气工程设计与施工人员,用于规范发电、输电、变电及配电环节中导体和电器的选型与设计,保障系统安全稳定运行。这份PDF共1个文件,大…

2026/9/22 6:51:50 阅读更多 →
嵌入式工程师的边缘AI实战:Jetson、Rockchip与Yocto技术栈解析

嵌入式工程师的边缘AI实战:Jetson、Rockchip与Yocto技术栈解析

/* 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 5:47:24 阅读更多 →
织梦网站评论后

织梦网站评论后"提示验证码错误请点击验证码图片更新验证码性能优化

织梦评论验证码报错?3步修复防挂马选建站哪家好 网站被黑挂马不知道怎么办,这是很多织梦(DedeCMS)站长深夜惊醒时的第一反应。后台突然多出不明代码,或者评论功能彻底瘫痪,提示“验证码错误请点击验证码图片更新验证码”,让人头皮发麻。这时候选建站公司哪家好,其实不如先看看你的服务器架构和代码逻辑是否…

2026/9/20 5:21:01 阅读更多 →

最新新闻

菱形虚拟继承的原理

菱形虚拟继承的原理

目录 摘要: 一 :菱形继承的概念及问题 1:概念 2:问题 二:虚拟菱形继承 1:语法 2:原理 ①:菱形继承的内存分布 ②:虚拟菱形继承的内存分布 ③:偏移量…

2026/9/23 15:44:20 阅读更多 →
学术写作AI:破解黑话,提升论文可读性与影响力

学术写作AI:破解黑话,提升论文可读性与影响力

1. 项目概述:当学术写作遇上"人话革命"去年审阅某核心期刊投稿时,我遇到一篇让我哭笑不得的论文——作者用"基于多维度认知框架的跨模态表征重构"来描述"用不同方法分析数据",通篇充斥着"后现代性话语解构…

2026/9/23 15:44:20 阅读更多 →
LPDDR5内存训练全流程解析:从ZQ校准到周期重训练的工程实践

LPDDR5内存训练全流程解析:从ZQ校准到周期重训练的工程实践

简介:面向内存控制器设计与嵌入式系统开发工程师,系统讲解LPDDR5内存的初始化与完整训练流程。内容涵盖上电初始化时序、ZQ校准(含输出驱动器阻抗校准与CA/DQ ODT阻抗校准)、命令总线训练、WCK与CK对齐、WCK占空比训练、读门控训练…

2026/9/23 15:44:20 阅读更多 →
3个避坑技巧搞定人体器官分布图代码面试必问

3个避坑技巧搞定人体器官分布图代码面试必问

3个避坑技巧搞定人体器官分布图代码面试必问 复制来的代码跑不通,控制台一堆红字报错,这时候你是不是只想把电脑砸了?这种“看似能跑实则崩盘”的情况,在技术面试中简直是重灾区。很多候选人拿着网上抄的 SVG 或 Canvas…

2026/9/23 15:44:20 阅读更多 →
搞定空间寄语:前端高薪必备的5个高频面试题

搞定空间寄语:前端高薪必备的5个高频面试题

搞定空间寄语:前端高薪必备的5个高频面试题 别再用“Hello World”糊弄自己了。很多学员学完语法,对着空白文档发呆,根本不知道怎么把零散的代码拼成一个能跑的项目。更扎心的是,面试官问起 高频面试题…

2026/9/23 15:44:20 阅读更多 →
RBAC权限系统设计与认证授权实践指南

RBAC权限系统设计与认证授权实践指南

1. 认证授权基础概念解析认证(Authentication)和授权(Authorization)是每个后端开发者必须掌握的核心安全机制。认证解决"你是谁"的问题,就像进入公司大楼时需要刷工牌确认身份;授权则解决"…

2026/9/23 15:43:19 阅读更多 →

日新闻

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/23 9:53:41 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/23 9:53:40 阅读更多 →