ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ClickHouse v22.8.12.45-lts 变更日志详解:LTS 补丁版修复了哪些问题、如何判断升级价值

ClickHouse v22.8.12.45-lts 变更日志详解:LTS 补丁版修复了哪些问题、如何判断升级价值 ClickHouse v22.8.12.45-lts 变更日志详解LTS 补丁版修复了哪些问题、如何判断升级价值【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本篇技术文章以 ClickHouse 仓库中归档的 v22.8.12.45-lts 变更日志 为主体逐条解读该 22.8 LTS 补丁版本相对上一版 v22.8.11.15-lts构建提交 65c9506d161的全部改动并结合仓库源码位置说明每项修复对应的模块。读完本文你可以掌握该版本修复的每一类用户可见问题及其影响的代码域、ClickHouse 变更日志中 Backported / NO CL ENTRY / NOT FOR CHANGELOG 等分类的准确含义以及评估 LTS 小版本补丁是否值得升级的判断方法。版本定位22.8 LTS 补丁线与版本标识该文档位于 归档目录头部元数据标注其归属2023侧边栏分组sidebar_label: 2023。标题行给出了精确的版本对比信息ClickHouse release v22.8.12.45-lts (86b0ecd5d51) FIXME as compared to v22.8.11.15-lts (65c9506d161)其中括号内的86b0ecd5d51、65c9506d161是两个版本的构建提交短哈希FIXME 表示这是一次修订版发布在已发布版本基础上重新打包修正。ClickHouse 采用v年.月.补丁.构建号的四段版本号-lts后缀表明 22.8 属于长期支持LTS分支补丁号持续递增该分支在仓库中可见从 v22.8.1.2097-lts.md 到 v22.8.21.38-lts.md 共 21 个补丁版本文件。理解这类 changelog 文件的关键格式约定可对照 变更日志撰写规范每条条目开头的Backported in #issue表示该修复最初在 master 分支完成随后被回移backport到 22.8 LTS 分支后面的 PR 号才是实际落入本分支的改动NO CL ENTRY分节表示该 PR 合入时没有撰写用户可见的 changelog 文案但仍被纳入发布NOT FOR CHANGELOG / INSIGNIFICANT分节表示这些改动对最终用户无感知内部工具链、CI、依赖更新等列出仅为保证发布内容的可追溯性。Bug FixLazy 数据库备份竞态修复本版本Bug Fix分节只有一条Fix race for backup of tables in Lazy databases. [#43104]回移跟踪 issue #44658作者 Vitaly Baranov问题背景Lazy 是 ClickHouse 中最轻量的数据库引擎其表实际是磁盘上的单个.sql定义文件数据库不维护表的元数据副本而是扫描目录来发现表。当BACKUP TABLE备份 Lazy 库中的表时列出表中有哪些表与读取表定义/数据两个动作之间存在时间窗口若并发执行CREATE TABLE/DROP TABLE备份逻辑可能读到一份不一致的表清单导致备份失败或备份出残缺结构。修复意义备份BACKUP/RESTORE 体系位于 src/Backups 目录元数据与表级备份协调逻辑在其中实现对 Lazy 这类目录即元数据的引擎特别敏感此修复消除了备份期间的竞态条件。如果你的生产环境使用 Lazy 数据库承载表定义并定期执行备份任务这条修复直接降低了备份出错概率。Build/Testing/Packaging Improvement构建与测试基础设施改进该分节包含 4 条面向 CI/构建系统的改进回移自 master均出自构建工具链维护者恢复构建步骤中的 sha512 校验和[#44017]重新把 sha512 摘要生成放回构建步骤保证发布产物的完整性校验链完整。压测挂起自动终止[#44214]stress test 在进程挂起超过 2.5 小时后被强制终止避免 CI 任务无限占用资源。构建任务前缀误判修复[#44311]修复因另一个前缀相似的任务已成功而跳过重建的问题。原文举例binary_darwin任务本应重新构建却因binary_darwin_aarch64成功而被错误跳过。对关心各平台构建产物正确性的用户这直接减少构建静默失效的风险。集成测试压缩错误重试[#44529]集成测试遇到压缩类错误时自动重试降低 CI 中的偶发失败率。这些条目虽然标记为构建/测试改进不改变查询语义但它们决定了你下载到的二进制包与测试通过率的可靠性是 LTS 分支工程质量提升的一部分。Bug Fix (user-visible)六个用户可见修复逐条解读这是本版本对最终用户最重要的部分共 6 条修复。下面结合仓库源码位置逐条说明其影响面。PR修复内容影响域 / 仓库源码位置#42126修复关联缺陷 #40651、#41404回移跟踪 #44751作者 Alexander Gololobov由两个历史 issue 聚合的修复#42791修复UserTimeMicroseconds/SystemTimeMicroseconds统计不正确查询指标统计system.processes 等表的 CPU 时间列#44067修复quantiles函数中的未定义行为可能导致读取未初始化内存由 fuzzer 发现src/AggregateFunctions/AggregateFunctionQuantile.h#44220防止ReadonlyReplica指标出现负值src/Storages/StorageReplicatedMergeTree.cpp#44346修复IN函数使用常量参数、且与LowCardinality常量组合使用时可能崩溃修复 #44221常量折叠 / 低基数列执行路径#44959修复宽 part 存在轻量删除lightweight delete掩码时ALTER TABLE ... TTL报错MergeTree 存储的 TTL 改写路径quantiles 函数的未定义行为与未初始化内存原文Fix undefined behavior in thequantilesfunction, which might lead to uninitialized memory. Found by fuzzer. This closes #44066. [#44067]作者 Alexey Milovidovquantiles及其quantileX系列变体是基于时序直方图的近似分位数聚合函数核心实现在 src/AggregateFunctions/AggregateFunctionQuantile.h公共工具如直方图桶分配逻辑在 src/AggregateFunctions/QuantilesCommon.h。未初始化内存类问题在聚合函数中尤其危险聚合状态会在多个线程、多个 part 间复用与序列化读到未初始化字节可能产生不确定的分位数结果在 sanitizer 构建下会直接报未定义行为UB。此修复由 fuzzer 触发发现属于结果可能静默出错级别的问题对依赖quantile*做 SLO/延迟监控的报表场景具有实际意义。ReadonlyReplica 指标不再出现负值原文PreventReadonlyReplicametric from having negative values. [#44220]作者 Antonio Andelicreadonly_replicas是监控 Replicated 表健康度的关键信号system.metrics/system.replicas中可见告警规则通常写成readonly_replicas 0。若该指标因计数逻辑复制表进入只读状态 1、恢复 -1 的配对出现负值基于监控面板的自动化会收到无意义信号。实现位于复制表核心代码 src/Storages/StorageReplicatedMergeTree.cpp。对运行 ReplicatedMergeTree 集群的用户这属于监控数据质量修复。IN LowCardinality 常量组合的崩溃原文Fix possible crash in case functionINwith constant arguments was used as a constant argument together withLowCardinality. Fixes #44221. [#44346]作者 Nikolai Kochetov典型的触发形态是WHERE column IN (SELECT ...)或IN (const_tuple)之类的常量集合判断且column为LowCardinality(…)类型、外层又把整个谓词当作常量进行折叠。此类组合涉及常量参数提取 → LowCardinality 包装/解包 → IN 求值的边界从源码结构看属于常量折叠与列类型特化交互处的防御缺失修复后消除了该路径上的崩溃。宽 part 带轻量删除掩码时的 TTL 改写报错原文fix alter table ttl error when wide part has light weight delete mask. [#44959]作者 Mingliang Pan宽 partwide part指列数以行存储展开、按列目录存放的 MergeTree 数据块lightweight delete mask 是轻量删除机制ALTER TABLE ... DELETE不重写数据、仅打删除掩码的产物。此前对含删除掩码的宽 part 执行ALTER TABLE ... MODIFY TTL会报错此修复打通了 TTL 改写与轻量删除共存的场景减少了对已执行过轻量删除的表做 TTL 调整时的失败。查询时间统计修正原文Fix incorrect UserTimeMicroseconds/SystemTimeMicroseconds accounting. [#42791]作者 Azat Khuzhin这两个字段记录查询消耗的用户态/内核态 CPU 时间是system.query_log中user_time_microseconds/system_time_microseconds列的来源也是容量规划与 CPU 限流决策的依据。统计口径错误会直接误导成本核算此修复保证上述指标与真实 CPU 时间一致。无 changelog 文案的修复S3 大对象分片上传NO CL ENTRY分节含一条值得单独强调的修复Fix multipart upload for large S3 object, backport to 22.8. [#44218]作者 ianton-ru该 PR 将大 S3 对象分片上传multipart upload的缺陷修复回移到 22.8 分支。虽然条目本身没有用户文案但对使用 S3 对象存储磁盘/表引擎直连 S3的用户影响面不小大对象上传是写入大 part 到对象存储的核心路径此修复降低了大对象上传失败的隐患。这类无文案但重要的条目提示评估 LTS 补丁时不能只看有描述的行也应关注该分节。NOT FOR CHANGELOG / INSIGNIFICANT内部改动清单以下为不影响用户行为、仅列出于完整性考虑的内部改动共 9 条可用于了解 22.8 分支该时期的工程活动PR说明#41858Object 类型推断仅在allow_experimental_object_type开启时生效Kruglov Pavel#43778AggregateFunctionMinMaxAny 的又一次修复Alexander Tokmakov#44055发布 PR 的分支指派自动化Mikhail f. Shiryaev#44091AggregateFunctionMinMaxAny 的另一个 bug 修复Alexander Tokmakov#44132升级 libdivide 依赖以获取新的除法优化Azat Khuzhin#44386增加子模块完整性sanity检查Mikhail f. Shiryaev#44399实现自定义 central checkout CI actionMikhail f. Shiryaev#44956栈展开unwinding期间不再检查读取结果一致性Alexander Gololobov值得留意的两个技术点AggregateFunctionMinMaxAny在短周期内连续两次修复#43778、#44091说明该聚合函数MIN/MAX 允许取任意同值元素变体在该时期存在较复杂的边界问题libdivide 升级则直接带来整除运算的微优化属于无声但有益的依赖更新。如何评估与验证这次升级基于本 changelog 的构成可以给出以下基于仓库事实的评估要点是否值得从 v22.8.11.15-lts 升级到 v22.8.12.45-lts如果你的场景命中下列任一项优先级较高——使用 Lazy 数据库并做备份、依赖quantile*近似分位数、运行 Replicated 表并监控readonly_replicas、使用LowCardinality列配合IN常量集合、对含轻量删除的表执行 TTL 修改、依赖user_time_microseconds做资源核算、或大对象写入 S3。版本确认方式部署后可通过SELECT version(), revisionNumber FROM system.build_options;或客户端clickhouse client --version核对实际运行的四段版本号与 changelog 文件名v22.8.12.45-lts对应。查阅完整脉络22.8 分支其余补丁版本如 v22.8.11.15-lts.md、v22.8.13.20-lts.md均在 docs/changelogs/archive 下按版本号命名可依次比对规划跨多个补丁的升级路径仓库根目录的 CHANGELOG.md 提供版本总入口docs/changelog_entry_guidelines.md 则解释了本文用到的条目撰写与分类规范。适用前提与限制本文所有结论均以当前仓库中该 changelog 文件及其引用的源码目录为准适用于 22.8 LTS 分支构建提交 86b0ecd5d51 对应版本条目中 PR/issue 编号沿用原文档记载具体代码行号级细节请以对应提交为准。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表