ARTICLE DETAIL

资讯详情

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

ClickHouse v22.3.3.44-lts 发布解析:22.3 LTS 分支的回移内容与 IPv 转换容错设置详解

ClickHouse v22.3.3.44-lts 发布解析:22.3 LTS 分支的回移内容与 IPv 转换容错设置详解 ClickHouse v22.3.3.44-lts 发布解析22.3 LTS 分支的回移内容与 IPv 转换容错设置详解【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本文基于 ClickHouse 官方变更日志 v22.3.3.44-lts 展开解析该 22.3 LTS 维护版本相对 v22.3.2.2-lts 的全部回移Backport内容并结合当前仓库源码深入讲解本次新增的input_format_ipv4_default_on_conversion_error与input_format_ipv6_default_on_conversion_error两个设置项的作用机制、默认值及与相关设置如cast_ipv4_ipv6_default_on_conversion_error的配合方式帮助运维与数据工程师准确评估该补丁版本的更新价值。版本定位22.3 LTS 分支的一次缺陷修复型维护发布该版本发布记录对应的提交为abb756d3ca2其上一版本为 v22.3.2.2-lts提交89a621679c6。从变更日志的结构看v22.3.3.44-lts 不包含任何新功能Feature全部变更均为 Bug Fix 类型的回移条目属于典型的长期支持LTS分支稳定性维护版本将主干上已验证的缺陷修复回移到 22.3 分支供生产环境用户在不升级大版本的前提下获取修复。该版本在 2022 年 changelog 归档中编号为sidebar_position: 1是 2022 年 ClickHouse 22.3 系列 LTS 分支的后续维护点。对于依赖 22.3 LTS 的企业部署这类版本的意义在于缓存死锁、类型转换崩溃、TTL 重复处理等问题都属于“静默但严重”的稳定性风险即使没有使用新功能也应当关注。本次新增设置允许无效 IP 值以默认值写入本版本最重要的用户可见变更是新增了两个输入格式设置项input_format_ipv4_default_on_conversion_errorinput_format_ipv6_default_on_conversion_error两者均为布尔类型默认值为 false。官方说明为当反序列化DeserializationIPv4 / IPv6 时若遇到转换错误使用列的默认值即空值/缺省值而不是抛出异常从而允许把非法 IP 地址值按默认值插入表中。源码中的定义与默认值在当前仓库中这两个设置定义于输入格式设置声明文件 FormatFactorySettings.hDECLARE(Bool, input_format_ipv4_default_on_conversion_error, false, R( Deserialization of IPv4 will use default values instead of throwing exception on conversion error. Disabled by default. ), 0) DECLARE(Bool, input_format_ipv6_default_on_conversion_error, false, R( Deserialization of IPV6 will use default values instead of throwing exception on conversion error. Disabled by default. ), 0)DECLARE宏的第三个参数false明确了默认关闭语义不开启时插入含非法 IP 字符串的数据会直接报错并终止整批写入开启后非法值被替换为列默认值写入流程继续。设置如何接入反序列化链路设置的生效路径可以从源码结构上完整追踪会话级设置被复制到每个输入格式的FormatSettings结构中声明见 FormatSettings.hbool input_format_ipv4_default_on_conversion_error false; bool input_format_ipv6_default_on_conversion_error false;FormatFactory.cpp 在建格式时把会话设置桥接到format_settingsformat_settings.input_format_ipv4_default_on_conversion_error settings[Setting::input_format_ipv4_default_on_conversion_error];反序列化 IP 列时转换逻辑读取该标志决定是否吞掉解析异常。与插入路径并列的还有查询期转换CAST路径仓库中还存在一个语义相近的设置cast_ipv4_ipv6_default_on_conversion_error定义于 FunctionsConversion.h并在 IP 编解码函数的执行中生效见 FunctionsCodingIP.cpp。也就是说插入容错看input_format_*SELECT 中 CAST/比较的容错看cast_*三者按场景分别控制。使用场景示例假设有一张埋点日志表CREATE TABLE log_events ( event_time DateTime, client_ip IPv4 DEFAULT NULL ) ENGINE MergeTree ORDER BY event_time;上游偶尔会推送client_ip not_an_ip这类脏数据。默认行为下整条 INSERT 失败启用该设置后非法值以NULL落地合法行不受影响INSERT INTO log_events FORMAT JSONEachRow {event_time:2022-04-01 00:00:00,client_ip:10.0.0.1} {event_time:2022-04-01 00:00:01,client_ip:not_an_ip} SETTINGS input_format_ipv4_default_on_conversion_error 1;这正对应变更日志中该条目的原始需求Closes #35726回移自 #35928 / #35733作者 Maksim Kita允许把非法 IP 地址值作为默认值插入表中避免单个脏字段拖垮整批数据导入。其他回移的缺陷修复按影响面梳理变更日志中“user-visible misbehaviour in official stable release”分类下共列出 6 项修复均回移自主干逐项说明如下问题对应回移条目影响与修复说明缓存中可能的死锁deadlock#35378回移 #35415Kseniia Sumarokova官方稳定版中可复现的并发死锁风险属高优先级稳定性修复IN子句中向 IPv4/IPv6 地址的 CAST 出错#35534回移 #35563修复 #35528Maksim KitaWHERE ip IN (1.2.3.4, ...)这类过滤在类型转换上的缺陷自定义类型转字符串时可能段错误或报错信息异常#35755回移 #35881Closes #35752Kruglov Pavel涉及类型系统输出路径的崩溃级修复extract函数参数解析错误#35799回移 #35856修复 #35751Nikolay Degterinsky函数求值阶段的参数处理 bugQuota 分组仅应尊重 quota 与 period忽略 shares#35815回移 #35938filimonov资源配额组quota group语义修正shares 并不能真正限制可使用的核心数避免对 per-column TTL 重复处理#35820回移 #35938 条目中的 #35820Azat Khuzhin列级 TTL 不再被多次计算减少冗余开销与行为不确定性从问题类型看这批回移覆盖了并发死锁、类型系统IP 转换、自定义类型转字符串、查询语义IN 过滤、quota 组和 TTL 执行四个方向说明 22.3 分支在此时间点处于集中清理存量缺陷的阶段。对生产环境的直接含义是如果你的部署依赖列级 TTL 或 IP 列的IN过滤升级到该版本可以直接消除日志中列出的已知异常路径。未列入正式 Changelog 的次要变更变更日志末尾还有一段标注为 “NOT FOR CHANGELOG / INSIGNIFICANT” 的条目虽然不面向最终用户发布但对理解该构建的实际内容仍然重要Object类型插入性能略有提升#35388Anton Popov修复Object数据类型的竞争条件race#35409Anton Popov修复开启optimize_functions_to_subcolumns时的崩溃#35512Anton PopovCMake 构建中重新启用 LLVM JIT 编译支持#35770Maksim Kita完成 22.3 分支的回移发布流程#35909Mikhail f. Shiryaev。其中Object类型半结构化 JSON 列类型的两项修复值得使用 JSON 列的部署留意竞争条件修复属于正确性问题而optimize_functions_to_subcolumns崩溃修复意味着此前开启该优化设置的 JSON 子列查询用户存在崩溃风险。小结谁应该升级到 v22.3.3.44-lts综合变更日志内容与仓库源码证据可以给出明确的升级判据你的 22.3 LTS 实例中出现过缓存死锁、查询挂起现象——本版本包含对应的死锁修复你从外部数据源如日志管道、第三方系统导入含 IP 列的数据且存在脏值——本版本首次提供input_format_ipv4_default_on_conversion_error/input_format_ipv6_default_on_conversion_error两个开关让“坏值转默认值”成为可控的插入策略且默认值在 FormatFactorySettings.h 中确认为false不升级或不显式开启即维持原有报错行为无兼容性风险你使用列级 TTL、quota 分组或Object/JSON 列——本版本包含多项针对这些路径的崩溃与竞争修复。对于仍在 22.3 分支上的部署v22.3.3.44-lts 是一个纯缺陷修复、无功能变更的低风险升级点而新引入的两个 IP 容错设置其定义、默认值与接入链路均可在上述源码路径中逐一核验便于在灰度环境中先行验证行为再全量开启。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表