TDSQL Boundless V21.6.x

RG 转冷流程中 prepare archive files 触发的 manual compaction 此前只能沿用整体 compaction 参数;现支持为转冷期间的 compaction 单独配置 max_compaction_bytes、max_subcompactions 等参数并支持动态调整,可更灵活、准确地控制该阶段 manual compaction 的行为并提升转冷性能,且不影响其他 compact。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

三、数据库管理

·转冷流程 manual compaction 支持独立配置参数

四、扩展性与性能

·优化高规格实例 Compaction 并发参数自适应配置

TDStore 按 CPU 核数与磁盘类型(云盘/本地 SSD)自适应派生 compaction/flush 并发参数:放宽高规格实例的 compaction 线程上限(云盘最高 12、本地 SSD 最高 32),并将非 speedup 场景的 compaction 并发调整为按 compaction 线程预算的 50% 派生;32 核及以下规格行为保持不变,提升高规格实例的 compaction 吞吐与空间回收效率。

·并行查询准入支持大 IN list 场景跳过代价阈值检查

查询包含很大的 IN list 时,优化器计划代价未充分计入逐行比较开销,计划会因低于 parallel_plan_cost_threshold 阈值而被误挡在并行之外;现检测到过滤谓词中的大 IN list(值个数达到 large_in_list_threshold,默认 1000)时跳过该阈值检查,使此类查询可进入并行执行,并新增会话级系统变量 large_in_list_threshold 用于调整判定阈值(设为 0 关闭该特性)。

·调整冷热变配磁盘容量参数分档水位线以匹配实际磁盘规格

将冷变配与热变配中依赖磁盘容量的参数分档水位线由按 TB 换算的容量值调整为与实际磁盘规格一致的十进制档位(如 1000GB、3000GB),并保证冷热变配对相同磁盘规格采用一致的参数分档规则,避免实例因两侧规格边界不一致落入错误参数档位而触发缓写。

·优化迁移变配时的 RG 调度计划生成

感知变配生成 RG 调度计划时,不再强制将 primary RG 调整到按节点排序计算的固定分布,支持以 1:1 方式迁移 RG,避免纵向扩容等需先扩后缩的场景下产生多余的迁移任务。

五、稳定性

·优化大 RG 快照装载期间的过期 SST 回收保护

缩短 install snapshot 数据装载流程中 pending output 保护对过期 SST 回收的阻塞窗口,耗时的准备阶段不再持有覆盖全库后续文件号的回收保护,减少大 RG 快照装载期间过期 SST 滞留造成的磁盘占用,降低磁盘高水位风险。

·优化写 RPC 网络错误的重试策略

对写入路径 RPC 错误按类型区分处理:明确可重试的错误码(如 EAGAIN)自动重试;网络错误中仅"连接未建立、请求未发送到对端"类错误允许重试,RPC 超时等无法确认请求是否已达对端的错误不重试,在提升写入链路容错能力的同时避免非幂等写入被重复执行。

六、数据迁移

·LogService MySQL client 模式支持系统 RG 消息特判放行

在 LogService MySQL client 回放模式下,系统 RG(sys rg)消息特判通过,跳过全局时间戳背压等待,避免系统消息被用户数据背压阻塞,保障回放链路持续推进。

七、运维

·新增后台自动合并小 SST 文件机制

新增由参数控制(默认关闭)的后台自动合并小 SST 文件机制:后台线程周期性扫描并合并小 SST 文件,降低 SST 文件数量。分片边界较多的环境开启该参数后,无需再手动执行小 SST 合并指令即可维持 SST 数量在合理水平。

八、问题修复

·修复分区表以 IngestBehind 方式在线新增唯一索引时,并行行数一致性检查因扫描快照获取时机问题误报行数不一致,导致 DDL 失败的问题。

·修复节点重注册时快速路径误用未初始化变量构造响应,导致向 CDC 等节点返回错误角色且错误一经固化无法自愈的问题。

·修复从旧版本升级的存量实例因并行扫描阈值参数与升级前不对齐,可能出现意外走或不走并行扫描的问题。

·修复 MC 误引入第三方日志组件,导致热点调试日志被打印到错误文件且该文件不会被自动清理的问题。

·修复非覆盖二级索引且 ICP 条件保留在 handler 层的索引扫描执行期间,RG leader 切换到本机导致批控制器从 RPC 批翻转为本地批时,release 构建下查询静默返回不完整结果的问题。

·修复多个 DDL 数据导入 worker 并发处理相同表时分别向 MC 查询 CF ID,放大 RPC 压力的问题。

·修复进程刚启动时 SHOW GLOBAL STATUS 的 Queries 计数可能为负并按无符号 64 位格式输出,监控显示为异常大值的问题。

·修复调用强制解绑灾备关系接口时 force 参数未生效,请求仍被延迟前置校验拦截的问题。

·修复 LogService 监控表中冲突检测器消息计数在 RG 被移除后未从总计数中扣减,导致计数只增不减、无法归零的问题。

·修复分区表执行 TRUNCATE/DROP PARTITION 使全局二级索引失效后再删除该索引时,下游 LogService 同步不到该删除操作的问题。

·修复分区表 BKA/MRR 并行预取查询与并发在线 DDL 触发 write fence 错误时形成跨线程循环等待,查询永久挂起且 KILL 及断连均无法清理的问题。

·修复节点磁盘只读保护解除后 BinlogInfoDB 的 compaction 不再被调度,持续报 write stall 且无法自愈的问题。

·修复快照备份构造节点/RG 映射时误将 log-only 节点保存的系统 RG 一并排除,导致 PITR 克隆恢复后部分已有表数据不可读的问题。

·修复 binlog dumper 拼接部分 SQL 时 extra_info 过长被 4096 字节截断,导致拼接出的 SQL 不完整、执行失败的问题。

·修复并行查询运行时过滤构建时 NDV 估算未基于 build 侧连接键,导致生成的过滤条件不准确的问题。

·修复通过 API 或工具手动设置 net/etcd 限流 burst 值后,在巡检、资源变更或重启时被自动计算值静默覆盖的问题。

·修复节点重做等场景下 MC 与 GTS 同时切主时,刷新线程无限重试 GTS 刷新导致 META 路由刷新永远无法执行、节点永久停留在 SERVER_BOOTING 的问题。

·修复自动转冷到期时间解析未使用策略时区,导致每日分区转冷触发时刻存在固定 8 小时偏移的问题,并新增每日自动转冷执行窗口配置。

·修复 witness 副本的 region 下发路径行为不一致,导致 witness 节点本地持有完整 region 列表、与控制面认知不一致的问题。

·修复灾备切换过程中主实例分片合并导致备实例同步服务无限等待已消失的旧分片,灾备切换长时间无法完成的问题。

·修复多 AZ 主模式实例创建时流程状态查询始终无有效结果,实例永久停留在创建中的问题。

·修复 MySQL Client 灾备回放中 RENAME TABLE 后执行的 DELETE 可能按旧表名生成回放 SQL,导致备库报表不存在并无限重试、回放卡死的问题。

·修复删除数据对象过程中部分分片已删除又有分片合并时,路由 meta version 不一致导致流程无法下发任务而卡住的问题。

·修复 MC 切主耗时记录的起止时间来源不一致,导致落库耗时不准确、升级检测误判的问题。

·修复 TDStore 事务遍历阶段发生超时且仍有事务未处理完成时仍返回成功,可能影响分裂/热合并等流程正确性的问题。

·修复统计信息采样计算索引 cardinality 时有效采样 key 数量明显偏少,对长字段索引统计值影响较大的问题。

·修复并行查询辅助范围切分回源查询失败时无退避地快速重试并关闭内部连接,破坏既定失败回退语义的问题。

·修复全量备份任务与冷热分层转冷并发执行时互相等待形成自锁,导致转冷副本组长时间无法调度收敛的问题。

·修复 RangeBlock 分裂写后台任务日志时过长 key 超出固定 1KB 缓冲区,叠加并发场景导致节点进程崩溃退出的问题。

·修复行数估算不准场景下优化器可能选错索引的问题:将索引选择优化器选项 prefer_wider_index 调整为默认开启。

·修复 range 估算将同一数据块的多个等值点查逐个估成整块行数,导致行数估算严重虚高、可能选错执行计划的问题。

·修复 RangeCache 后台线程驱逐 range 统计信息时存在竞态导致 UAF、容量收缩路径可能死锁的问题。

·修复切主事务迁移请求的分包大小计算漏计 DELETE/UPDATE 记录的 extra_info 与锁信息,导致请求超过 RPC 上限被拒绝的问题。

·修复 persist cache 专用 CF 配置在存量实例上未生效,旧的 range stats 无法及时物理回收,导致 stat_info_db 空间持续增长的问题。

·修复节点冷启动后退避窗口期内不加载已持久化的 range stats,导致 Seek 热点的问题。

·修复 RG split 与并发 BatchPutV3 请求的竞态窗口,可能造成同主键双 INSERT 的问题。

·修复收集 cross-index SST 统计时采用全局平均值导致行数统计低估、ANALYZE 重新收集也无法自愈的问题。

·修复 ttl_enable 开启后 TTL 后台选举锁被误判为进行中的 DDL,导致删除 distribution policy 失败的问题。

·修复缩可用区等流程的副本迁移依赖 rebalance 调度且缺少超时熔断,导致流程长时间卡住、实例持续处于变更中的问题。

·修复并行查询执行 EXPLAIN ANALYZE 时汇总计时信息缺少边界检查,读取越界导致进程崩溃的问题。

·修复 TDStore 节点时间戳获取持续失败影响相关流程的问题。

·修复会话已有错误状态时再次产生新错误,错误状态二次写入触发断言导致进程崩溃的问题。

·修复 FLUSH TABLES WITH READ LOCK 后会话锁模式状态未正确清理,后续执行 DROP TABLE 时断言失败导致进程崩溃的问题。

·修复 SERIALIZABLE 隔离级别下 INSERT 报错后未回滚会话事务,紧随其后的 DROP TABLE 断言失败导致进程崩溃的问题。

·修复异步复制连接故障转移特性所需系统表未创建时,调用相关函数或查询对应视图发生空指针解引用导致进程崩溃的问题。

九、参数变更

以下为本版本涉及变更的公有云展示参数(是否在公有云展示:是)。

变更类型 参数名称 默认值 说明
默认值变更 tdstore_user_cf_soft_pending_compaction_bytes_limit 启动时按数据盘规格与磁盘类型自动计算(本版本调整:引入磁盘类型差异化,本地 SSD 限额更高;分档边界由 1TB/3TB/5TB 对齐为 1000GB/3000GB) 用户列族待合并字节数软限流阈值:待合并字节超过该值时写入降速至延迟写入速率。默认值随数据盘规格与磁盘类型在启动/变配时自动计算,本版本调整为按磁盘类型差异化(本地 SSD 更高)并把控盘分档边界对齐控制面 1000GB/3000GB 规格;≥3000GB 档停用总量软/硬限流、仅保留 L0 限流。典型场景:升级后部分规格实例的写入限流阈值会变化,若出现写入降速告警,可对照新分档评估调整。
默认值变更 tdstore_user_cf_hard_pending_compaction_bytes_limit 启动时按数据盘规格与磁盘类型自动计算(本版本调整:引入磁盘类型差异化,本地 SSD 限额更高;分档边界由 1TB/3TB/5TB 对齐为 1000GB/3000GB) 用户列族待合并字节数硬限流阈值:待合并字节超过该值时写入暂停,为最严格的写入保护。默认值计算规则本版本与软限流同步调整(磁盘类型差异化 + 分档边界对齐 1000GB/3000GB)。典型场景:升级后若出现写入暂停告警,通常是硬限流阈值变化所致,可对照新分档手动调大或置 0 关闭;不建议长期关闭,存在磁盘空间堆积风险。

十二、扩展性与性能

·分区表 IN 列表精确点查启用批量 MRR 访问路径,显著提升多分区场景查询性能

分区表上基于主键、覆盖索引或二级索引的 IN 等值列表精确点查自动路由至批量 RPC 路径,远程访问(RPC)次数由"IN 值个数 × 分区数"量级降为"分区数"量级,基准测试显示24分区场景查询延迟最高下降约50倍;该优化对用户透明,无需改写 SQL。

·分层存储 Durable DB 与 Cache DB 支持按层配置压缩算法,默认压缩算法统一调整为 ZSTD

新增 Durable DB 列族的按层压缩算法配置入口(默认 ZSTD),Cache DB 列族保留前两层不压缩并将后续层级默认算法统一调整为 ZSTD;配置正确映射至对应列族选项,已有分层存储行为不受影响。

十三、语法与功能

·新增 MySQL 5.7 兼容模式,支持旧系统变量与旧 sql_mode 取值

新增系统变量 mysql57_compatibility_mode(默认 OFF,支持 SESSION/GLOBAL/启动配置),开启后 tx_isolation、tx_read_only 自动映射至对应新变量并保留原有校验与事务语义,query_cache 系列参数可正常赋值且读取固定返回0,sql_mode 自动过滤 NO_AUTO_CREATE_USER 等 11个已移除取值并返回 Warning,显著降低 MySQL 5.7 应用迁移至本版本的改造成本;关闭开关后恢复原有校验行为。

十四、安全增强

·支持用户自定义 SSL 证书开启数据库连接加密

支持用户上传企业自有 CA 签发的服务器证书与私钥替换平台默认签发的云端证书:内核对下发的自定义证书进行格式与私钥匹配性校验,校验通过后加载生效,并提供证书更新、停用与轮换能力;证书非法或加载失败时拒绝加载并自动回滚至原证书,保障数据库服务不中断。自定义证书模式下 TLS 版本兼容范围与连接性能同平台证书保持一致,满足企业使用自有 PKI 体系证书的合规审计要求。

十五、问题修复

·修复特定运行环境下数据盘与日志盘读写吞吐监控指标持续上报为0的问题。

·修复全局内存使用超过软限值时回放流程可能整体死锁且无法自愈、实例回放持续无响应的问题。

·修复开启 TDE 时异常回滚与并发导入场景下密钥映射可能被误删,导致节点重启后数据文件无法解密的问题。

·修复副本组合并完成后原副本组主动快照可能长时间阻塞,影响日志回收与空间释放的问题。

·修复副本组分裂流程中单步超时时间设置未实际生效的问题。

·修复创建分区表指定冷热分区分布时,热分区被错误放置到冷存储的问题。

·修复含冷数据对象的实例执行变配时任务可能长期无法完成、实例持续处于变配中的问题。

·修复流式增量备份创建上传文件时始终重试同一 COS 代理节点、不重新解析服务发现地址的问题。

十六、语法变更

变更类型 语法 说明
新增 mysql57_compatibility_mode(MySQL 5.7 兼容模式开关) 新增 MySQL 5.7 兼容模式总开关(会话级)。开启后,当前会话可使用5.7时代的旧变量名与旧配置习惯,兼容范围:事务旧变量别名 tx_isolation(同步 transaction_isolation)、tx_read_only(同步 transaction_read_only),仅兼容模式会话可读写,隐身变量、不参与持久化;已移除的 query cache 系列变量(读恒为0,SET 静默接受、无效果):query_cache_size、query_cache_type、query_cache_limit、query_cache_min_res_unit、query_cache_wlock_invalidate;sql_mode 可额外接受11个5.7已移除模式名(POSTGRESQL、ORACLE、MSSQL、DB2、MAXDB、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、MYSQL323、MYSQL40、NO_AUTO_CREATE_USER),静默映射或忽略,SHOW 仍只输出规范模式名。

十九、扩展性与性能

·非分区表 DELETE 操作支持 BKA 优化

非分区表执行多表 DELETE 操作时,通过开启 BKA(Batched Key Access)和 Join Buffer 优化,显著提升删除性能,解决删除操作耗时过长的问题。

20、问题修复

·修复 SPAN_TRACE 观测子系统在异步导出数据时,因内存生命周期管理不当导致的内存访问异常和进程崩溃问题。

·修复 bthread 在短超时场景下永久卡死的问题。

·修复 Fast Online DDL 在跨节点传输 SST 文件时,因未同步加密密钥信息导致远端节点解密失败的问题。

·修复批量操作场景下攒批处理逻辑的性能问题。

·修复重启后 bthread workers 线程数重复扩展导致过度并发和性能回退的问题。

·修复仅扩展 VARCHAR 列长度且未同时修改默认值时,DDL 操作未使用 Inplace 算法而退化为 Copy 方式整表重建的性能问题。

·修复实例迁移变配过程中,广播 RG 因 member 数量上限约束导致副本迁移无法继续的问题。

·修复并行查询场景下访问 I_S 表时发生内存泄漏的问题。

23、数据库管理

·RocksDB 工具支持 TDE 加密数据访问

为 sst_dump 和 ldb 工具新增 –cnf_path 参数,支持传入配置文件路径以初始化 TDE 解密环境,使运维人员能够对加密实例的 RocksDB 数据文件执行查询和校验操作。若未指定 –cnf_path,工具会尝试从 –db/–file 路径自动推断配置文件位置。

·优化 Raft 模块日志文件命名格式

将 Raft 模块日志轮转文件命名格式统一为时间戳格式,与数据库日志保持一致,便于现网日志检索和跨日志关联分析。

·新增慢查询算子级追踪功能

当查询执行时间超过慢查询阈值时,系统自动输出完整执行计划,辅助 DBA 快速定位慢查询根因。

·优化磁盘空间保护参数精度与机制

将 tdstore_enter_readonly_threshold_percent 参数改为 DOUBLE 类型,支持1-100%两位小数精度,并简化为单阈值机制——进入和退出只读使用同一阈值,提升磁盘空间管理的精确性和易用性。

·支持并行查询 worker 线程实时监控

新增全局状态变量 PQ_active_worker,支持实时查看正在执行的并行查询 worker 线程数,便于监控系统负载和性能调优。

·统一死锁信息中节点名称显示格式

将死锁相关信息视图 TDSTORE_PESSIMISTIC_DEADLOCK_DETAIL_INFO 和 TDSTORE_PESSIMISTIC_DEADLOCK_INFO 中的节点标识统一为 MC 下发的节点名称,确保系统视图间节点名称显示的一致性。

·增强 SHOW PROCESSLIST 全局视图功能

SHOW PROCESSLIST 和 INFORMATION_SCHEMA.PROCESSLIST 现在默认显示集群所有节点的连接信息,支持 WHERE 子句过滤,并新增 ENDPOINT 列标识连接所属节点,提升多节点环境下的连接监控和问题诊断效率。

·增强诊断函数对二级索引的部分解码能力

优化 DBMS_ADMIN.DECODE_TDSTORE_KEY 函数,支持对二级索引 key 进行部分解码,在无法完全解码时提供占位符并通过 SHOW WARNINGS 提示,提升 DBA 诊断索引数据问题的效率。

·新增内核级 SQL 限流能力

支持通过 SQL 模板、关键词、表名、用户名等维度自动识别并限制 SQL 并发执行,有效应对突发流量、慢 SQL 等场景,提升数据库稳定性。

·优化主可用区设置流程

改进主可用区设置后的副本分布逻辑,确保主副本均匀分布在指定可用区,避免创建多余副本组和副本分布不均的问题。

·新增行锁和事务监控指标

新增7个全局状态变量和1个系统变量,提供死锁次数、行锁等待时间、跨节点事务数等监控指标,支持通过 SHOW GLOBAL STATUS 查询,便于客户监控数据库锁等待和事务性能。

24、扩展性与性能

·优化分区表 BKA Join 并行预取性能

通过并行预取机制将分区表 BKA Join 的串行 RPC 请求改为并行执行,显著提升多分区场景下的查询性能,减少整体查询延迟。

·优化 TDStore 区域垃圾回收的重叠检查性能

重构批量清理逻辑,通过优化区间重叠校验算法,显著降低 Region GC 场景下的 range 重叠检查开销,提升系统资源回收效率。

·支持物理机模式下的 COS 落冷功能

优化物理机模式下 COS 冷热数据分离功能的性能和稳定性,解决因 DNS 解析异常导致的备份失败问题,实现动态路由和负载均衡,提升数据落冷效率。

·编译工具链优化

将全链路编译工具链从 gcc + gold 切换为 llvm clang + mold,构建效率提升30%以上,同时解决了跨架构 AVX 指令集兼容性问题,保持运行时行为完全等价。

·支持长 IN 列表自动优化为 Hash 物化派生表

当 IN 列表元素数量超过阈值时,自动将 IN 条件转换为基于 Hash 物化派生表的 semi-join,将匹配复杂度从 O(N) 降低到 O(1),显著提升包含大量元素的 IN 查询性能。

·快照读场景支持本地数据读取优化

扩展 Local Get 优化至快照读路径,支持复合主键范围扫描场景的本地数据读取,减少跨节点 RPC 调用,提升查询吞吐量和响应性能。

·统一优化 local scan 路径以提升查询性能

通过统一 local scan 与 remote scan 的条件过滤处理路径,减少不必要的回表操作和内存拷贝,显著提升二级索引查询在数据本地化场景下的执行效率。

·TDStore Monkey Bloom Filter 优化

优化了 TDStore 存储引擎中 Bloom Filter 的工作机制,提升了点查询性能,通过减少不必要的磁盘 I/O 操作来降低系统延迟。

·引入子集群级 gRPC 网络限流器

在 MC 一对多架构中实现子集群间网络和 etcd 限流配额隔离,基于 CPU 核数动态计算全局配额并按子集群均等分配,防止单一子集群流量过载影响其他集群,提升多租户场景下的稳定性。

·支持 Hash Join Runtime Filter 优化

在 Hash Join 场景下,通过构建 Bloom Filter 提前过滤不可能满足 join 条件的数据,显著降低 probe 侧数据处理成本,提升大表 join 查询性能。

·支持 Parallel Hash Join 并行查询优化

引入共享 Hash Table 架构,显著降低 Hash Join 操作的内存占用并提升并行效率,在大表 Join 场景下可减少 50% 以上内存消耗并提升查询性能。

·EXISTS/IN 相关子查询优化

新增查询转换规则,将符合条件的 EXISTS/IN 相关子查询改写为非相关 IN 子查询并进行物化,显著减少外表行数较大时的索引查找和 RPC 开销,提升查询性能。

·优化并行查询代价模型

重构并行查询优化器的代价计算模型,统一 Hypergraph 成本口径,提升并行计划选择的准确性和执行效率。

·优化分区表 bulk load 导入性能

在分区表数量特别多的场景下,自动合并小 SST 文件以减少 L0 层文件数量,避免触发缓写限制,提升批量数据导入效率。

·优化 Proxy SQL 统计指标,提升可观测性

将原有的粗粒度 Proxy SQL 统计升级为按 DML 类型细分的指标体系,新增转发失败和执行失败两类统计项,消除 THD 复用导致的重复计数问题,使审计日志 SQL 数与统计指标保持一致,提供更精确的 SQL 执行观测能力。

·ALL/ANY 子查询并行执行优化

支持 ALL 子查询及部分 ALL/ANY 改写为 MIN/MAX 形态的子查询在并行查询场景下的执行,提升包含此类子查询的复杂查询性能。

·支持全局二级索引的分区能力

全局二级索引现在支持按 HASH、KEY、RANGE 等方式进行分区,可将单个大索引拆分为多个子索引分散到不同存储节点,有效解决容量热点和访问热点问题,提升大规模数据场景下的查询性能。

·持久化范围统计信息默认启用

默认开启 persist range stats 功能,降低 range 估计阶段的耗时。

·热点调度器算法优化

优化 MC 热点调度器 V2 算法,支持自动识别读写模式、新增副本迁移能力、改进打分算法稳定性,提升热点调度的准确性和响应速度。

·慢查询优化器追踪持久化

新增慢查询优化器追踪持久化功能,将满足条件的 SQL 查询优化器决策过程持久化到日志文件,支持通过系统视图查询历史记录,便于事后排查优化器决策问题。

·Proxy 支持多表 JOIN 场景的分区裁剪优化

通过 FQS 前置优化实现 JOIN 条件传递,在多表 JOIN 查询中自动推导分区键约束,将查询路由到对应分区执行,显著提升复杂查询的代理执行效率。

·CDC 节点 binlog 内存控制参数支持容器规格自适应

优化了 CDC 节点的 binlog 内存控制机制,四个关键内存参数现在会根据容器内存规格自动调整,避免人工调优,提升大事务场景下的 binlog 回放性能。

·完善对象存储冷热数据分离架构功能

增强 TDStore、MC、SQLEngine 三个核心组件在对象存储冷热数据分离方面的协同处理能力,新增基于日期分区的自动化冷热数据分离功能和冷 RG 副本分裂能力,解决冷 RG 数据量增长导致的读写热点和运维效率问题。

通过实现本地 Bloom Filter 机制优化 DurableDB 点查性能,显著减少对 COS 的直接访问频率。

支持包含冷 RG 的集群的完整备份恢复能力,备份时自动分流处理热 RG 和冷 RG 数据,恢复时确保冷热数据完整重建。

新增自动冷热数据识别策略,系统可自动判定冷数据并下发转冷任务,全面提升存储成本优化效率、系统扩展性和稳定性。

·LogService MysqlClient 模式性能优化

通过引入事件驱动冲突检测、批量 SQL 回放等优化机制,显著降低灾备实例的数据同步延迟,从优化前的3-5 秒提升到亚秒级,更好地满足 RPO < 3 秒的灾备要求。

·MySQL Client 复制模式支持大事务处理

通过内存控制和临时落盘机制,使 MySQL Client 复制模式能够处理大事务场景,避免内存溢出问题,提升批量数据导入等大事务场景的稳定性。

·并行查询支持 EXISTS 关联子查询下推

优化并行查询优化器,支持 WHERE 条件中的 EXISTS 关联子查询下推到并行 worker 执行,同时保证结果与串行执行完全一致。

·行存节点并行查询参数自动配置

SQLEngine 行存节点启动时根据 CPU 核数自动计算并行查询参数,优化资源利用率,降低运维复杂度。

·窗口函数并行查询加速

支持窗口函数在并行查询模式下分布式计算,当 PARTITION BY 条件与数据分布键兼容时,窗口计算可下推到各 worker 节点并行执行,显著提升大数据量窗口查询性能。

·支持单表 UPDATE/DELETE 语句的并行执行及性能测试

新增 PARALLEL hint 支持单表 DML 语句的并行执行,通过多 worker 并行处理大幅提升大批量数据更新和删除操作的执行效率。在真实场景下进行了全面性能测试验证,涵盖非分区表和分区表的不同表结构,确保并行 DML 在高并发场景下的性能表现满足业务需求,降低单 worker 串行执行的耗时。

·优化非空唯一索引编码提升写入性能

针对非空唯一索引优化底层编码格式,将主键从索引键移至值中,使唯一性校验从范围扫描优化为点查操作,显著提升 INSERT/REPLACE 等写入场景的性能。

25、语法与功能

·子查询消除能力增强

将原有的 EXISTS 子查询消除规则扩展为通用的子查询消除能力,新增对 IN、ANY、ALL 谓词子查询的消除支持,在满足安全条件时直接将子查询折叠为布尔常量,避免不必要的子查询执行开销,提升查询优化效率。

·TDSQL Boundless 与 goInception 工具链兼容性优化

增强 TDSQL Boundless 与 goInception SQL 审核工具的兼容性,优化 binlog 事件头部 thread_id 透传机制,确保 QUERY_EVENT 的 thread_id 与 SQL 执行会话保持一致。使客户 DBA 工具链无需改造即可平滑接入 TDSQL Boundless 数据库,保证依赖此一致性的数据迁移工具正常工作。

·支持 parallel_suggested_scan_ranges 变量通过 SET_VAR hint 临时调整

parallel_suggested_scan_ranges 变量现在支持通过 SET_VAR hint 在单条 SQL 中临时调整并行查询的 range 拆分策略,便于调试优化而不影响会话后续 SQL 执行。

·EXPLAIN ANALYZE 支持算子级别 RPC 性能统计

新增 EXPLAIN ANALYZE VERBOSE RPC 语法,在执行计划中按算子粒度展示 RPC 调用次数和延迟信息,帮助用户快速定位复杂查询的性能瓶颈,提升排查效率。

·TTL 过期数据支持归档到指定表

为 TTL 功能新增归档表配置选项,允许将过期数据先归档到指定表再删除,满足合规留存和冷热数据分层需求,同时保持事务一致性。

·移植 MySQL 社区子查询优化功能

移植 MySQL 社区 subquery_to_derived 相关补丁,修复28个已知崩溃和结果错误问题,支持通过 transformer_switch 开关将子查询转换为派生表 JOIN 执行,提升查询性能和稳定性。

·修复子查询到派生表转换的正确性缺陷

修复 MySQL 社区7个已验证但未修复的子查询转换正确性缺陷,通过保守策略拒绝不安全转换场景,确保启用 subquery_to_derived 优化后查询结果正确性。

·支持自动日期分区管理

新增 INTERVAL RANGE 分区语法,用户可在创建表时指定分区间隔(如按月/按天),系统自动创建未来分区,无需手动执行 ADD PARTITION,避免因分区缺失导致的业务写入中断。

·新增表级自动过期 (TTL) 功能

支持通过 TTL 语法自动清理过期数据,简化业务维护成本,覆盖日志、会话、审计等场景的数据自动归档需求。

·支持 JSON 多值索引和虚拟列功能

新增对 JSON 多值索引和虚拟生成列的支持,提升 JSON 数据查询性能并增强在线 DDL 操作能力。

·支持无主键表在线添加主键

新增支持无主键表通过 ALGORITHM=COPY 方式在线添加主键,解决无主键表场景中因不支持在线添加主键导致的阻塞问题,提升 TDSQL 在线 DDL 能力与 MySQL 标准行为对齐。

26、稳定性

·修复 agent 上报的 alive 指标准确性问题

修复监控 agent 上报的 alive 指标与节点实际状态不一致的问题,确保监控系统能够准确反映节点健康状态,避免误判导致运维响应延迟。

·修复并行查询子查询过滤错误问题

修复了并行查询模式下子查询过滤条件评估错误的问题,确保查询结果与串行执行一致,同时解决了相关内存安全问题提升系统稳定性。

·修复系统表并行查询报错问题

优化分片表查询的优化器策略,避免在分布式执行场景下因常量表提取导致并行计划无法生成,解决系统表分片查询报错问题。

·灾备同步过程中主备实例 sql_mode 一致性保证

通过将 sql_mode 纳入集群全局变量管控体系,在灾备模式下默认禁止修改 sql_mode 以保证主备一致性,同时提供 loose 模式供管理员紧急放行,避免因主备 sql_mode 不一致导致的 Binlog 回放失败和同步中断问题。

·新增 MC 模块运行时死锁检测工具

通过编译时 AST 分析和运行时低开销检测机制,系统性发现 MC 调度模块中的锁顺序不一致问题,提升系统稳定性,检测开销控制在200 – 600ns 级别。

27、备份恢复

·回档实例数据分布优化

优化回档流程,当回档实例与原实例节点数量一致时,确保数据分布完全还原,提升回档数据一致性。

·支持 HyperNode 元数据增量备份与异步补偿机制

新增 HyperNode 元数据变更历史的增量备份能力,在时间戳不可用时支持降级写入和异步补偿,确保克隆和回档操作能获取准确的节点标签历史分布,提升数据分布映射的求解效率。

·提供基于 Binlog 的 SQL 闪回工具

验证命令行工具 mysqlbinlog_flashback_percona_auto,支持从 Binlog 反向解析生成恢复 SQL,实现行级误操作数据的快速恢复,无需依赖全量备份或创建新实例。

28、数据迁移

·优化 Myloader 导入兼容性

调整 Myloader 工具在数据导入时的默认行为,不再执行 SET GLOBAL 参数设置操作,避免因高权限账号缺少 SYSTEM_VARIABLES_ADMIN 而导致导入失败,提升数据迁移场景的兼容性。

·修复 LogService MySQL 模式自增列0值回放不一致问题

优化 LogService MySQL 模式的 SQL 生成逻辑,在自增列值为0时自动注入 optimizer hint 临时设置 NO_AUTO_VALUE_ON_ZERO 模式,确保上下游数据一致性并避免自增计数器溢出导致的同步卡死问题。

29、安全增强

·支持自定义密码复杂度策略

为 TDSQL Boundless 增加自定义密码复杂度功能,通过内核开关控制密码策略校验,支持低、中、高三级策略配置,包括密码长度、字符组合要求、违规词字典等安全规则,满足企业级安全合规需求。

30、运维

·优化 tdmc 软件包体积

移除 tdmc 软件包中 tools 目录下的工具,该目录约650MB,相关工具已通过其他途径发布,减少镜像体积以提升部署效率。

·新增 TDStore 存储层 RPC 调用聚合统计能力

提供全局视角的 RPC 调用统计功能,支持按时间窗口聚合展示各类 RPC 调用的次数、平均耗时、分位数耗时及 QPS 等指标,便于运维人员快速定位存储层性能瓶颈。

·新增 TDStore 存储层 RPC 执行快照功能

新增 get_rpc_snapshot 命令,可实时查看存储节点正在执行的 RPC 请求及其耗时,帮助运维人员快速定位性能问题和长尾请求,提升故障排查效率。

·Hyper Agent 支持 COS SDK 请求日志动态输出

新增 Hyper Agent 对 COS SDK 请求和响应的动态日志输出能力,支持在线调整日志级别,便于排查 COS 通信异常问题。

·增强 TDSQL MC 集群运维工具 mc-dmt 的综合运维能力

重构 mc-dmt 工具基础架构并引入智能路由机制,新增绕过 MC 进程直接操作 etcd 的 bypassMC 模式,提供 snapshot 子命令支持元数据备份恢复和状态查询功能。在 etcd 完全不可用的极端场景下,通过 bbolt 子命令直接操作数据库文件实现紧急恢复,扩展支持 TSO、Leader、Schema 版本等更多元数据类型,新增 key 和 scan 子命令实现统一元数据管理,显著提升故障恢复能力和运维效率。

31、问题修复

·修复了同一条 Instant/Inplace DDL 使用 AFTER 添加多个字段时,后续新增字段的初始默认值元数据可能无法正确保存,导致旧行查询返回其他行的残留值的问题。

·修复两阶段事务恢复过程中全局路由刷新单飞保护失效,导致大量并发请求打满 MC CPU 的问题。

·修复 MC 分区 leader 打散机制在 RG merge 长期任务执行期间无法触发,导致主可用区内节点间分区 leader 分布不均衡的问题。

·修复了 TDStore 克隆恢复过程中增量恢复阶段因未等待 RPC 连接就绪即开始执行,导致恢复任务失败的问题。

·修复 PARTITION BY KEY ALGORITHM=1 对 _ci 字符串列使用字节哈希而非 collation 感知哈希,导致等值查询 miss 及唯一键约束失效的问题。

·灾备切换与主实例分片合并并发时,备实例新建同步服务可能因等待已消失的旧分片而陷入死循环,导致同步卡死、切换无法完成。

·修复 SQLEngine 在 initialize_auto 阶段启动失败的问题。

·修复特定并发扫描场景下可能导致数据库进程异常崩溃的问题。

·修复全量备份时 ReportDataImportStatistic RPC 被集群状态拦截导致 DDL 执行失败的问题。

·修复了 TDSQL 节点重启后 tdstore 性能参数计算逻辑中的 shell 脚本缺陷,避免参数设置不符合预期。

·优化异步解锁阈值参数,解决锁数量达到30万时出现解锁慢导致慢查询的问题。

·修复分区表按非分区键 UPDATE 在大量 Region 场景下路由放大导致的慢 SQL 问题。

·优化灾备切换场景下的只读处理逻辑,避免非必要的切主操作导致分区 leader 分布长期不均衡。

·修复增量恢复场景中 create RG 操作时按 backup_ts 查找 COS rlog 导致漏查 recover_ts 附近日志的问题。

·修复 SQLEngine 在1C 实例场景下启动时概率性报错的问题。

·修复跨集群 fast-path 恢复流程中 PRIMARY_LEADER 标签未正确映射的问题,避免恢复后触发不必要的调度。

·修复在特定条件下优化器错误选择索引导致查询性能下降的问题。

·修复 Hypergraph 优化器中 Hash Join 驱动顺序选择逻辑错误,当 Build 端行数多但 Probe 端实际为空时避免不必要的全量扫描。

·修复 HBase CreateTable 与 transfer leader 并发操作时,因 DropTable 异步 DDL 未完成即返回成功,导致建表失败的问题。

·修复 DROP DATABASE 操作包含大量分区表时 DDL 作业信息超过 32MB 限制导致作业无法恢复的问题。

·修复了在 copy DDL 期间 rename 表时, Dictionary_client::acquire 可能 hang 住的问题。

·修复 INSERT IGNORE 多批次叠加批内冲突导致进程崩溃的问题。

·修复 TDStore 磁盘配额超限错误被误判为不可恢复的问题,确保配额超限与磁盘空间满同样可自动恢复。

·修复网络超时参数设置超大值时导致毫秒换算溢出,造成工作线程阻塞的问题。

·修复 TDSQL 数据字典缓存中 dd Object 泄漏问题,避免 show create table 报错 Table definition has changed。

·修复 TDBR 全量备份过程中因 COS 返回400超时错误被误判为不可重试错误,导致单个文件上传失败即取消整个备份任务的问题。

·修复了开表过程中加载统计信息元数据开销大导致 SQL 执行抖动的问题。

·修复 RocksDB 原生 compaction 逻辑在非 bottommost 层过度切分 SST 文件导致碎片化的问题,新增动态参数控制 RocksDB 原生逻辑中的 SST 边界对齐行为。

·修复 Debug 版本中开启 LogDebug 日志调试功能后,并行查询执行聚合函数时 worker 进程崩溃的问题。

·修复多表 JOIN 查询中优化器选择 join order 时忽略 ordering index 提前终止收益的问题。

·修复 TDStore 在 leader transfer 期间错误返回虚假锁等待超时的问题,提升错误信息的准确性。

·修复 binlog 临时落盘流程中因磁盘满导致的数据丢失问题,确保在磁盘紧张时重试能保持数据完整性。

·修复 hypergraph 优化器模式下等值 JOIN 条件在查询变换过程中被错误删除的问题。

·修复 TDSQL 在 Region Split 和 Leader Transfer 并发场景下,长事务因路由错误导致提交失败的问题。

·修复在并行查询模式下执行包含 MAKE_SET 函数的特定 SQL 时可能触发断言失败导致进程崩溃的问题。

·优化 TDStore 节点重启时的 Segment 加载策略,大幅减少万级日志段场景下的重启耗时。

·修复取消分布策略 (DP) 后副本数无法自动恢复到集群默认值的问题。

·修复了在特定场景下 PQ 子查询物化派生表导致外层并行失效的问题。

·修复 ProxyExecute 在高并发场景下全局锁竞争导致的性能瓶颈问题。

·修复在 MD RAID、LVM/Device-Mapper 或 loop 设备挂载环境下 I/O await/time 监控指标显示为0的问题。

·优化 TDStore 在 SST 文件数量较多时 compaction 和 flush 操作的 db mutex 持有时间,减少文件数量对读写性能的影响。

·在 SQLEngine 模块中为 ordering index 选择过程添加 optimizer trace 输出,提升查询优化器调试能力。

·引入自适应 prefer_ordering_index 功能,优化 ORDER BY + LIMIT 查询在数据分布稀疏场景下的性能回退问题。

32、参数变更

变更类型 参数名称 说明
修改 connect_timeout SQL 引擎等待连接建立的超时时间(秒)。取值范围上限由 LONG_TIMEOUT 调整为2147483。
修改 net_read_timeout 从连接读取数据的超时时间(秒)。取值范围上限由 LONG_TIMEOUT 调整为2147483。
修改 net_write_timeout 向连接写入数据的超时时间(秒)。取值范围上限由 LONG_TIMEOUT 调整为2147483。
修改 wait_timeout 非交互式连接空闲超时时间(秒)。取值范围上限由 LONG_TIMEOUT 调整为2147483。
修改 tdstore_enter_readonly_threshold_percent TDStore 进入只读模式的容量百分比阈值。参数类型由 int 改为 double,取值范围下限由0调整为1.0。
废弃 tdstore_leave_readonly_threshold_percent TDStore 退出只读模式的容量百分比阈值(兼容型系统变量)。已废弃,绑定为兼容占位,后续版本将移除。

33、语法变更

变更类型 语法 说明
新增 PQ_DISTRIBUTE(WINDOW [name] {NONE|GATHER}) hint PQ_DISTRIBUTE hint 新增 WINDOW 目标,支持窗口函数并行下推控制,可按窗口名精确匹配或通用回退。
新增 INLIST_TO_JOIN / NO_INLIST_TO_JOIN hint 新增 IN 列表转 semi-join / anti-join 重写优化 hint,可绕过软约束(阈值、NOT IN、DATE 类型)限制。
新增 ALTER TABLE … PARTITION/SUBPARTITION STORAGE_TIER 分区/子分区级别支持设置 STORAGE_TIER,支持自动冷却(auto cooling)配置。
新增 间隔分区(INTERVAL 分区定义) 支持 RANGE 间隔分区,可按间隔值自动新增分区。
新增 包含列索引(ICI)VALUE() 子句 二级索引支持包含列(Included Column Index),可在索引中定义 VALUE() 包含列。
新增 EXPLAIN ANALYZE … VERBOSE / RPC 选项 EXPLAIN ANALYZE 新增 VERBOSE 与 RPC 统计选项,用于输出更详细的执行与 RPC 耗时信息。
新增 [SHOW [LOCAL | GLOBAL] PROCESSLIST](https://write.woa.com/document/) PROCESSLIST 支持 LOCAL / GLOBAL 限定,分别查看本节点与全局连接。
新增 表级 TTL 选项(TTL TTL_ENABLE TTL_ARCHIVE_TABLE TTL_JOB_INTERVAL REMOVE TTL) 建表及 ALTER TABLE 支持 TTL 相关表选项,用于表级数据生命周期管理。
新增 CREATE PARTITION POLICY … WITH (key=value) 属性语法 分区策略语法调整为 WITH (k=v) 属性写法。
新增 全局二级分区索引(Part-GSI)GLOBAL INDEX PARTITION BY 相关 DDL 支持分区全局二级分区索引,CREATE / ALTER TABLE 索引定义新增 GLOBAL INDEX PARTITION BY 选项及 UPDATE GLOBAL INDEXES 子句。
变更 保留字 LEAD、LAG 由保留字改为非保留字 LEAD、LAG 不再作为保留关键字,可用作标识符;依赖其保留属性的旧 SQL 需评估。

34、数据字典变更

变更类型 数据字典 说明
新增 INFORMATION_SCHEMA.META_CLUSTER_INSTALL_SNAPSHOT_PROGRESS 新增系统视图,用于查询迁移 RG 时安装快照的进度。
新增 INFORMATION_SCHEMA.OPERATOR_TRACE 新增系统视图,用于收集慢查询访问路径树。
新增 INFORMATION_SCHEMA.SLOW_QUERY_OPTIMIZER_TRACE 新增慢查询优化器 trace 视图。
新增 INFORMATION_SCHEMA.TTL_TABLES 新增 TTL 表清单视图。
新增 SYS.TTL_TASK 正在执行的 TTL task 信息
新增 SYS.TTL_TASK_HISTORY 执行完成的历史 TTL task 信息
新增 INFORMATION_SCHEMA.GLOBAL_INDEX_PARTITIONS 新增全局索引分区信息视图。
新增 INFORMATION_SCHEMA.TDSTORE_LSM_COMPACTION_PRESSURE 新增 TDStore LSM compaction 压力视图。
新增 INFORMATION_SCHEMA.TDSTORE_LSM_LEVEL_INFO 新增 TDStore LSM 层级信息视图。
新增 INFORMATION_SCHEMA.TDSTORE_LSM_SST_INFO 新增 TDStore LSM SST 文件信息视图。
新增 INFORMATION_SCHEMA.TDSTORE_SNAPSHOT_FLUSH_INFO 新增 TDStore 快照刷盘信息视图。
变更 INFORMATION_SCHEMA.LOGSERVICE_ELAPSED 新增 WaitForMemoryQuota、WaitForDiskQuota 列,用于统计等待内存配额与磁盘配额的耗时。
变更 INFORMATION_SCHEMA.LOGSERVICE_MEMORY_STAT 新增 disk_soft_limit_bytes、per_rg_disk_limit_bytes 列,用于展示磁盘软限制与每 RG 磁盘限制配置。

35、错误码变更

变更类型 错误码 错误消息
新增 8629 Included Column Index %s defines column '%-.192s' in value part more than once
新增 8630 Included Column Index %s cannot have column '%-.192s' present in KEY%s and VALUE parts at the same time.
新增 8641 Parallel query failed on node '%s': %s
新增 8642 TTL column '%s' does not exist in table '%s'
新增 8643 TTL column '%s' must be of type DATE, DATETIME, or TIMESTAMP
新增 8644 TTL column '%s' must be defined as NOT NULL
新增 8645 TTL column '%s' cannot be an AUTO_INCREMENT column
新增 8646 TTL is not supported for temporary tables
新增 8647 Invalid TTL_JOB_INTERVAL '%s': expected format is '<number><unit>' where unit is one of s, m, h, d (e.g. '1h', '30m', '7d')
新增 8648 Table '%s'.'%s' does not have a TTL configuration
新增 8649 TTL-related options (TTL, TTL_ENABLE, TTL_JOB_INTERVAL, TTL_ARCHIVE_TABLE, REMOVE TTL) must be altered in a dedicated ALTER TABLE statement and cannot be combined with any other options or actions. Please issue a separate ALTER TABLE for TTL changes.
新增 8650 TTL_ARCHIVE_TABLE refers to the source table itself; self-archiving is not allowed.
新增 8651 TTL archive table '%-.192s' does not exist.
新增 8652 TTL archive table '%-.192s' is incompatible with source table: %-.512s
新增 8653 Source table requires an explicit PRIMARY KEY when TTL_ARCHIVE_TABLE is set (archive_then_delete strategy needs PK to drive scan).
新增 8654 TTL archive row-count invariant (F4.1) violated: archived %u row(s) but deleted %u row(s) within the same batch transaction (source='%-.192s', archive='%-.192s'). The batch was rolled back and the task cancelled. Investigate concurrent constraint differences (e.g. UNIQUE / DUP_ENTRY on archive) or schema asymmetry. Set @@ttl_archive_strict_row_match=OFF to bypass after a known benign migration.
新增 8658 Concurrency control : %s
新增 8659 The CCL table operation failed due to the following error from SE: errcode %d – %.256s
新增 8660 Concurrency control rule %d is not valid when %s
新增 8661 Concurrency control rule %d is duplicate when %s
新增 8662 Concurrency control rule %d is not found in %s
新增 8663 Concurrency control rule %d cann't acquire available slot
新增 8664 Concurrency control waiting count exceed max waiting count
新增 8665 Concurrency control refuse to execute query
新增 8666 Didn't found suitable field condition when apply ccl queue
新增 8667 Error when flush CCL rules for others: %s
新增 8668 Interval partitioning requires RANGE partitioning
新增 8669 Interval partitioning does not allow multiple partition fields
新增 8670 Interval partitioning requires at least one partition to be defined
新增 8671 Invalid interval value
新增 8672 Invalid interval type for partition
新增 8673 The interval type does not match the partition key
新增 8674 The interval value is beyond the value range of the partition expression
新增 8675 The partition range produced by interval partitioning exceeds '%s'
新增 8676 Interval partitioning can only be changed from a RANGE partition
新增 8677 The interval_partitioning_enabled variable is OFF
新增 8678 Interval partitioning does not allow insert operations from a trigger or stored function
新增 8679 Interval partitioning is not supported under LOCKED TABLES mode
新增 8680 No more than %lu new range partitions can be auto-created at once for interval partitioning
新增 8681 For interval partitioning, partition '%s' must be named '%s' or use a name without the '_p' prefix
新增 8682 Failed to advance storage-side schema version for interval auto-add on table '%s.%s'
新增 9539 A GLOBAL INDEX must include all columns in the global index's partitioning function
新增 9540 For a RANGE-partitioned GLOBAL INDEX, the partition columns must be a prefix of the index columns
新增 9541 Global index '%-.64s' has no partition for the given value
新增 9542 Global unique index '%s' of table '%s' is currently unusable. Use ALTER TABLE … UPDATE GLOBAL INDEXES to rebuild.

38、数据库管理

·优化 RocksDB 数据格式版本默认值设置

将 tdstore_rocksdb_data_format_version 参数默认值从 ROCKSDB_DATA_FORMAT_VERSION_UNKNOWN 改为 ROCKSDB_DATA_FORMAT_VERSION_1,并引入跳板升级策略确保存量实例安全升级,为后续性能优化功能提供基础支持。

·新增客户端出入流量监控指标

新增 Bytes_sent 和 Bytes_received 指标的监控能力,支持展示数据库实例的客户端出入流量,便于运维监控和容量规划。

·新增 SQL 语句级资源隔离能力

支持通过 SQL 文本精确匹配或正则匹配规则,将特定 SQL 路由到指定 worker-thread 资源组执行,实现更细粒度的 SQL 级别资源管控,提升多租户环境下的资源隔离效果。

·新增分布式查询监控统计功能

在 performance_schema.events_statements_summary_by_digest 表中新增 SUM_DISTRIBUTED 列,用于统计 SQL 语句以分布式方式执行的次数,便于 DBA 识别和优化跨 shardkey 查询。

·新增分布式查询日志记录功能

新增系统变量 log_queries_distributed,开启后可将所有分布式查询记录到慢查询日志中,并提供 Logged_reason 字段区分记录原因,增强分布式查询的可观测性。

39、扩展性与性能

·支持 Go SDK 直连访问 TDSQL HBase 模式

新增 GoHBase SDK 对 TDSQL HBase RPC 的原生支持,提供 NewTDSQLClient 接口和 WithTDSQLConfig 选项,实现 CRUD、Scan 和 DDL 操作的完整兼容访问。

·优化 Raft 日志压缩算法

将 Raft 日志压缩算法从 Snappy 替换为 LZ4,显著提升大事务处理性能,压缩和解压吞吐量大幅提高,整体耗时减少约2.5%。

·引入 Hypergraph 查询优化器

新增基于超图算法的查询优化器,支持更高效的复杂多表 Join 查询优化,提供更好的执行计划质量和 Hash Join 支持,显著提升复杂查询性能。

·增强 brpc 线程组监控可观测性

新增9类按 tag 分组的 brpc 性能监控指标,支持独立监控资源隔离后各线程组的运行状态,提升系统可观测性和运维效率。

·新增基于 SQL Digest 的资源隔离机制

实现基于 SQL 指纹的资源映射隔离,支持将特定 SQL 模式的请求路由到指定线程组执行,提升资源利用率和系统性能。

·新增大查询自动识别与隔离功能

基于 SQL digest 自动识别大查询并将其路由到专用线程组执行,避免大查询占用工作线程影响正常业务 SQL 响应时间,提升混合负载场景下的资源利用效率。

·新增分区并行扫描能力

SQLEngine 支持分区表并行扫描,优化同分布分区表 Join 性能。

·优化 Derived Table 并行查询下推能力

支持 Derived Table 查询在 worker 节点执行,提供 shared 和完全下推两种策略,显著提升并行查询性能并降低 leader 节点负载。

不支持子查询中 Derived Table 下推策略。

·Binlog dump 性能优化支持并行回放

重构 binlog dump 架构为多队列并行处理,采用归并排序算法和批量刷盘机制,显著提升高并发场景下的吞吐性能,sysbench oltp_update_non_index 测试从10.5万 QPS 提升至24万 QPS。

·优化大规模表创建性能

通过引入高性能序列化、细粒度锁机制和增量持久化等技术,显著提升海量表并发创建场景下的执行效率,大幅降低 CPU 和内存使用。

·优化非核心业务迭代器内存使用

将 snapshot install、online data validation 等非核心读写路径的迭代器参数 fill_cache 设置为 false,避免并发执行时大量冷数据占用 block cache 内存,有效防止 OOM 并保障前台读性能。

·优化非索引列多条件查询估行精度

增强 SQLEngine 对同一非索引列多个过滤条件的 range 估行能力,通过直方图合并 range 计算选择率,显著提升复杂查询场景下的执行计划准确性。

·HBase 兼容模式二期功能增强与性能优化

重构 HBase 兼容模式的 scan 查询路径,采用 range 数据分布替代 hash 分区,显著提升 scan 性能;支持逻辑 region 和 rg 分裂,增强数据扩展性;新增 Filter 支持,实现与 HBase 2.6一致的15种过滤器语义;支持 conditional mutation 原子操作;适配增量备份恢复能力,确保 HBase 数据可恢复性;完成 HBase Client JAR 发布到 Maven Central 仓库的标准化工作。

·优化日志副本 DDL 处理性能

通过移除日志副本中的 region 维护逻辑,显著降低 DDL 操作时的 CPU 和内存资源消耗,提升大规模表创建场景下的执行效率。

·优化快照恢复中副本迁移任务成功率

精细化控制快照保存流程中的超时等待机制,提升迁移任务在并发 split 操作时的成功率,确保快照恢复任务的整体可靠性。

·优化分区表全局索引创建性能

通过引入分布式归并排序机制,消除大单表和分区表添加全局索引时的数据重叠问题,显著减少该场景下 DDL 操作耗时和 Raft 日志回放阻塞。

·增强慢查询日志存储层性能诊断能力

在慢查询日志中新增存储层过滤行数统计字段,帮助 DBA 快速定位谓词下推、MVCC 版本过滤、删除标记跳过和二级索引回表等存储层性能瓶颈问题。

·优化 Online DDL 期间增量数据 Compaction 策略

通过引入 Fake CompactionJob 占位机制,在 Online DDL 数据回填阶段阻止增量数据下沉到 LSM-Tree 最底层,消除 Ingest 阶段额外 Compaction 开销,提升 DDL 执行效率和稳定性。

·LogService MySQL 客户端模式内存精确控制

引入精确内存控制机制,通过 GenSqlRowInfo 数据落盘和四层逃生通道设计,彻底解决大事务场景下的内存溢出问题,确保 MySQL 客户端模式下的全链路内存占用可控。

·支持对象存储(COS)冷热数据分离架构与监控计费能力

实现基于对象存储(COS)的冷热数据分离架构,支持在创建表或分区时通过新增 STORAGE_TIER 参数指定冷热属性(OBJECT_STORAGE/LOCAL_STORAGE),冷表数据存储在本地缓存数据库(CacheDB)和远端持久化存储(DurableDB)中。支持通过 ALTER TABLE 语法将 STORAGE_TIER 参数指定为 OBJECT_STORAGE,将表由热转冷,数据从本地存储转储到对象存储上。

同时新增完整的监控与计费能力,包括节点级别 COS API 调用次数统计、库表级别存储用量视图(INFORMATION_SCHEMA.TDSTORE_TIERED_STORAGE_USAGE)以及热转冷任务进度监控,提供用量计费、精细化管理和运维监控的完整解决方案,大幅降低大规模冷数据存储场景下的存储成本。

·Install Snapshot 多源拉取优化

支持从 Follower 节点拉取 Snapshot 数据,降低 Leader 节点压力,缓解多可用区部署和热点 Leader 场景下的资源竞争问题。

·新增大查询队列管理功能

引入大查询队列机制,对查询进行智能分类和资源分配,限制大查询的 CPU 占用,优先保障小请求性能,有效避免资源竞争导致的性能影响。

·支持无主键表在线 DDL 操作

新增对无主键表的在线 DDL 支持,允许在表无主键的情况下执行列类型修改、添加列等操作而无需阻塞写入,显著提升无主键表 DDL 操作的并发性和可用性。需注意本版本无主键表的 Online DDL 有如下限制:

·无主键分区表 online copy 成无主键分区表时,不能修改分区规则(例如不能修改分区数目,不能修改分区算法等)

·受限于当前架构,无主键分区表和无主键非分区表之间无法转换

·无主键表暂时无法通过 Online DDL 转换成有主键表,也就是本版本不支持 Online ADD PK 操作

·支持 hybrid 集群跨 MC 迁移能力

新增 hybrid 子集群跨 Meta Cluster 迁移功能,支持资源再均衡和容灾切换,迁移过程保持数据一致性,提升集群运维灵活性。

40、语法与功能

·支持 LogService 开启时的多表 DDL 操作

解除 LogService 新回放逻辑开启状态下对多表 DDL 的限制,支持多表 DROP TABLE 和 RENAME TABLE 操作,确保主备数据一致性。

·分区表全局二级索引 (GSI) 功能实现

在 RocksDB 分区表中实现全局二级索引 (GSI) 功能,支持 GLOBAL INDEX 语法定义、DML 写入维护、跨分区唯一性检查、查询优化以及分区 DDL 联动。该功能显著提升非分区键查询性能,支持全局唯一约束,优化器可自动选择 GSI 扫描路径,同时提供 UPDATE GLOBAL INDEXES 子句确保 DROP/TRUNCATE 分区操作后索引可用性。

41、稳定性

·优化 schema 不存在错误处理机制

修复读写场景下 EC_TDS_SCHEMA_NOT_EXIST 错误码的重试逻辑,避免无效重试导致的连接丢失问题,提升业务可用性。

·ETCD raft 层支持从配置文件动态更新集群节点配置

修复 MC 节点迁移场景下 ETCD raft 层使用旧 IP 端口配置的问题,确保节点重启后能够正确使用新的网络配置,提升集群稳定性。

42、备份恢复

·修复 MC 元数据增量备份临时文件清理问题

优化增量备份流程,自动清理备份过程中产生的临时文件,避免磁盘空间占用和备份失败问题。

·优化物理恢复 COS SST 文件下载超时机制

修复 COS SDK 下载超时硬编码问题,将 HTTP Client Timeout 从固定30秒改为动态计算,确保与32MB PartSize 匹配,提升大文件下载成功率。

43、问题修复

·修复 MC 模块 GetTxnTs 重试上下文未显式 cancel 导致的内存泄漏问题

·修复分区表 rec_per_key 统计信息不符合预期的问题

·修复 TDSQL 不支持生成用户权限管理操作的 binlog 事件问题

·修复 mc-agent 在 follower 节点上无法正确清除备份任务相关监控指标的问题

·修复 Agent 增量备份中 BackupSstFiles 并发请求时 localTmpDir 碰撞导致的 PB meta 上传失败问题

·修复 INSERT ON DUPLICATE KEY UPDATE 语句在 BATCH_PUT 模式下 duplicate-check 锁超时时错误返回 Unknown error occurs 的问题,现在会正确显示锁等待超时错误信息

·修复 C++ 隐式类型转换导致的 LogService 警告问题,避免 SK Delete 操作生成错误的 extra_info 信息

·新增线程数量超过阈值时自动导出调用栈信息的功能

·修复 VE 路由刷新过程中因空指针解引用导致的 SIGSEGV 崩溃问题

·修复 DeleteDuplicateKeyValues 函数在处理 REPLACE INTO 和 BATCH_PUT 优化路径时漏设 stmt_id 的问题

·支持 skip scan 查询优化下推至 tdstore 层,减少频繁的 index lookup RPC 调用,提升查询性能

·修复灾备集群创建任务在网络异常时永久卡死且无法取消的问题

·修复 MC 一对多场景下全局单例被覆盖导致灾备 subcluster 的 LogService 元数据错乱问题

·修复创建灾备实例时元数据过大导致 etcd 请求超过最大限制的问题

·修复实例水平扩容后偶发出现非预期资源组迁移任务的问题

·修复回档时数据字典初始化过程中冗余 RG size 计算影响效率的问题

·修复 BATCH DELETE 极端场景下标识位残留导致加索引表出现数据不一致报错的问题

·修复 TDSQL 早期版本在恢复过程中数据字典初始化超时导致克隆失败的问题

·修复 logservice_replay_index 系统表结构导致的跨地域灾备实例同步延迟问题

·修复 XA 事务并发场景下 XA rollback/commit 返回成功但数据未实际回滚或提交导致的静默数据丢失问题

·修复 SQLEngine shutdown 时 DDL 后台线程无法响应退出信号导致卡住的问题

·修复 tdsql_max_retry 参数设置为0时导致事务启动异常的问题

·修复 HBase 表名包含点号时增量迁移工具在 MySQL 建表失败的问题

·修复 HBase batch get 操作在特定场景下返回数据行数少于预期的问题

·在 SQLEngine 的 add index 操作中增加磁盘空间充足性检查,防止空间不足时执行索引创建

·修复 TDStore 批量更新列族选项时因迭代器失效导致的堆内存使用后释放问题

·修复 TDStore 日志模块在程序退出时因静态变量析构顺序问题导致的 global-buffer-overflow 错误

·移除已废弃的 BulkLoadLock fillback 模式,该模式曾用于加速索引创建但会锁表,现已被 ingest-behind 模式替代

·优化器代价模型增强,支持感知 Index Condition Pushdown 过滤效果,提升索引选择准确性

44、参数变更

变更类型 参数名称 描述
修改 optimizer_switch 优化器开关集合新增 flag:- bka_keep_order:BKA JOIN 结果保持和外表一致的顺序,能够利用外表索引有序性进行有序输出,规避不必要的排序;- bka_firstmatch:firstmatch 计划支持 BKA JOIN 方式执行。- icp_cost_aware:支持 ICP 代价感知

45、语法变更

变更类型 语法 说明
新增 CREATE TABLEALTER TABLE CREATE TABLE / ALTER TABLE 支持新增表选项 STORAGE_TIER = {AUTO_STORAGE | LOCAL_STORAGE | OBJECT_STORAGE},用于声明表或分区的存储层级。例如:CREATE TABLE t1 (…) STORAGE_TIER = LOCAL_STORAGE;。
新增 ALTER TABLE … MODIFY PARTITION … STORAGE_TIER ALTER TABLE 支持在分区级别修改存储层级:ALTER TABLE t1 MODIFY PARTITION (p1) STORAGE_TIER = OBJECT_STORAGE;。
新增 CREATE INDEX … GLOBAL 分区表上支持全局二级索引(GSI)。CREATE INDEX、CREATE TABLE 中索引定义可追加 GLOBAL 关键字声明全局索引。
新增 ALTER TABLE … UPDATE GLOBAL INDEXES 扩展 ALTER TABLE 的 DROP PARTITION / TRUNCATE PARTITION 语句支持新增 UPDATE GLOBAL INDEXES 子句,用于修改分区的同时重建 GSI。示例:ALTER TABLE t1 DROP PARTITION p1 UPDATE GLOBAL INDEXES;。
新增 优化器 Hint:USE_RANGE_CACHE / NO_RANGE_CACHE 新增范围缓存 Hint:/*+ USE_RANGE_CACHE(…) */、/*+ NO_RANGE_CACHE(…) */,用于启用/禁用 range cache 估计 range 内的行数。
新增 优化器 Hint:CACHE_RESULT 新增子查询结果缓存 Hint:/*+ CACHE_RESULT */,取代原 SUBQUERY_CACHE 实验 Hint,用于标记子查询结果可缓存。
新增 PARALLEL(…) Hint 参数形态扩展 PARALLEL Hint 支持新的参数形态:可接受 parallel_scan_type(如 DYNAMIC_RANGE、PARTITION),用于声明分区并行扫描策略。原 PARALLEL(n) 语义保持兼容。

46、数据字典变更

变更类型 数据字典 说明
变更 INFORMATION_SCHEMA.KEYWORDS 视图内容同步新增记录:STORAGE_TIER、LOCAL_STORAGE、OBJECT_STORAGE,均为非保留关键字(RESERVED=0)。
变更 INFORMATION_SCHEMA.KEYWORDS 视图内容同步新增记录:AUTO_STORAGE 为非保留关键字(RESERVED=0)。
新增 INFORMATION_SCHEMA.LOGSERVICE_MEMORY_STAT 新增系统视图,用于查看 LogService MySQL Client 模式内存占用统计。
新增 INFORMATION_SCHEMA.PROXY_DECISION 新增系统视图,用于查看代理路由决策追踪信息。列:SEQ、QUERY、FINAL_ACTION、TRACE、MISSING_BYTES_BEYOND_MAX_MEM_SIZE。
新增 INFORMATION_SCHEMA.TABLE_PARTITION_INFO_BRIEF 新增系统视图,提供表分区的简要信息(轻量版)。
新增 INFORMATION_SCHEMA.TDSTORE_TIERED_STORAGE_USAGE 新增系统视图,用于查看冷数据存储容量使用情况。
新增 INFORMATION_SCHEMA.TDSTORE_TIERING_COLD_RG_JOB_PROGRESS 新增系统视图,用于查看冷数据分层搬移任务进度。
变更 INFORMATION_SCHEMA.META_CLUSTER_RGS 视图新增4列:rep_group_stats_cache_db_approximate_size、rep_group_stats_durable_db_approximate_size、storage_tier、temperature_state,用于展示副本组的统计缓存大小、持久化统计大小、所处存储层级以及冷热温度状态。
变更 INFORMATION_SCHEMA.META_CLUSTER_DATA_OBJECTS 视图新增1列:storage_tier,用于展示数据对象所在的存储层级(AUTO_STORAGE/LOCAL_STORAGE/OBJECT_STORAGE)。
变更 performance_schema.events_statements_summary_by_digest 新增1列:SUM_DISTRIBUTED,用于统计分布式执行次数汇总。
变更 VIEW_RESOURCE_TAG 在 attribute 字段说明中新增 large_query 类型说明。
变更 VIEW_RESOURCE_TAG_THREAD_INFO 在 attribute 字段说明中新增 large_query 类型说明。

49、数据库管理

·新增热点数据监控能力

新增 INFORMATION_SCHEMA.META_CLUSTER_HOT_DATA_OBJECTS_HISTORY 系统表,用于记录数据对象的热度统计信息,包括字节速率、键速率、查询速率以及热度等级等指标;同时优化 TDStore 模块的指标统计和上报机制,完善 bytes_read、bytes_write、keys_read、keys_write 等关键性能指标的采集和监控,帮助 MC 快速识别并优化热点数据,提升数据库运维监控的全面性和准确性。

·优化在线 DDL 操作期间 RG 调度策略

在 fast online DDL 操作过程中,当不创建新资源组时,系统将限制 Region 所在资源组的调度操作,确保 DDL 操作的稳定性和可靠性。

·优化慢查询日志监控粒度

增强 TDSQL 慢查询日志的监控能力,通过细粒度参数控制实现更精准的 RPC 性能问题定位和优化。

·增强 performance_schema 对 DDL 回滚操作的监控能力

修复了 DDL 语句在执行回滚操作时,其工作线程持有的元数据锁 (MDL) 无法在 performance_schema.metadata_locks 系统表中被观察到的问题。此修复提升了 DDL 操作的透明度和故障排查能力。

·支持缩容场景下规格修改与内存释放

新增缩容场景接口,支持预先修改实例规格(内存与 CPU 核心数),并在缩容前主动释放空闲缓存内存,提升缩容成功率和资源利用率。

·支持自动感知实例变配并调整表分布

当实例发生规格变更时,系统自动识别并重新计算分区表和非分区表的分布策略,实现数据在资源之间的均匀打散,提升资源利用效率和查询性能。

·支持系统表跨节点关联查询与内存统计表全局配置

针对如 INFORMATION_SCHEMA.processlist 等内存表,增加 shard 表属性,使用并行框架生成并行计划,获取所有节点的数据。使对这类表的 GROUP BY、ORDER BY 等聚合操作以及 JOIN 操作在全局层面进行,返回跨所有节点的统一聚合结果,而非每个节点的独立结果集,满足了跨节点统计分析的需求。

·performance_schema.data_locks、performance_schema.data_lock_waits、INFORMATION_SCHEMA.processlist、INFORMATION_SCHEMA.tdstore_part_ctx、INFORMATION_SCHEMA.tdstore_compaction_history、INFORMATION_SCHEMA.tdstore_active_compaction_stats、INFORMATION_SCHEMA.tdstore_sst_props、INFORMATION_SCHEMA.tdstore_cf_options 这些表默认为 shard 模式,查询所有节点数据。如果上述表查询没能生成并行计划,报错给客户端,用户可以关闭 tdsql_enable_shard_table 获取单节点数据。

·查询时 shard 表和非 shard 表不可混合使用,即不支持 shard 表和非 shard 表 JOIN。

·新增 hint /*+ shard_table */,使语句中所有表都按 shard 模式优化。

·增强审计日志查询能力,支持通过 SQL 语句跨节点聚合查询所有 Hyper Node 的审计日志

扩展了数据库的审计功能,提供统一的 SQL 查询接口,允许用户通过单个查询语句获取分布在所有 Hyper Node 上的审计日志信息。此功能简化了在分布式架构下进行安全审计、行为分析或故障排查的操作,提升了运维与管理的便利性。

·增强 EXPLAIN ANALYZE 输出,增加了 VERBOSE 选项,展示并行查询中每个工作线程 (Worker) 的详细性能数据

优化了 EXPLAIN ANALYZE 对并行查询计划的展示。现在,输出结果会包含每个并行工作线程的实际执行时间、处理行数等明细信息,并对排序、哈希连接、聚合等关键节点补充内存使用量、临时表大小等定制化性能指标。该功能为深入分析并行查询各阶段的负载均衡与资源消耗提供了有力工具。

50、扩展性与性能

·优化 binlog 转换延迟性能

通过缩短 binlog 刷盘间隔、优化复制组等待关系和加快 MC Job 推进,显著降低 binlog 转换延迟至毫秒级,提升数据同步效率。

·提升灾备实例回放速度

优化了 log_receiver_get_raft_log_base_size 参数的默认值,加快 Raft log 获取速率,从而提升灾备实例的回放性能。

·引入 Hypergraph 优化器支持

新增 Hypergraph 优化器基线代码,为查询优化提供更先进的底层架构支持,提升复杂查询场景下的优化能力和处理效率。

·为分区表 ADD INDEX 操作默认启用 ingest-behind 回填模式以提升性能

优化分区表创建索引的性能,默认采用 ingest-behind 回填方式,加速大表索引的构建过程。

·优化 brpc stream 传输可靠性

为 brpc stream 流式传输增加重试机制,在网络异常场景下自动重试失败请求,提升数据传输的成功率和系统稳定性。

·优化 TDStore 心跳上报指标准确性

改进心跳上报中的 bytes/keys 等指标统计方式,改为统计实际扫描的数据量,使指标更准确地反映节点的真实压力。

·Serverless 场景功能增强

新增 Serverless 实例形态支持,可根据实际负载动态调整计算资源,优化资源利用效率。同时备份文件名新增 mcIdentifier 字段,提供更精确的备份标识,便于用户管理和追溯备份文件。

·新增 MC 一对多管理能力

为降低小规格实例的资源成本、提高 MC 集群资源利用率,并为后续多租户方案奠定基础,本次更新实现了 MC(元数据控制器)集群一对多管理能力。该能力允许一个 MC 集群纳管多个 HyperNode(数据计算)集群。主要变更包括:1) MC 架构调整,支持在单个 RaftCluster 下管理多个子集群(Instance)的元数据与调度;2) 提供子集群注册、配置独立管理、冻结及卸载接口;3) 优化初始化流程,支持新集群动态接入。此功能为规划中的基础能力,后续将进一步完善资源隔离、迁入迁出等高级特性。

·支持路由查询归并及多键值增强

通过实现路由查询的归并机制,在高并发场景下将多个相似的路由请求合并处理,有效降低 MC 的并发压力,提升系统整体性能和稳定性。该功能同时支持 key list 和 key range list 参数,提升了分布式查询的灵活性和性能,支持更复杂的多键值路由场景。

·支持并行查询工作线程分组执行

SQLEngine 新增支持将并行查询任务分配到独立分组的工作线程中执行,有效提升复杂查询的处理性能,避免不同类型查询间的资源竞争。

·支持 brpc 分组可观测性

新增 brpc 分组的监控观测能力,提供更细粒度的运行状态信息,助力问题排查和性能分析。

·限制索引表 Block Range 统计数量

限制单个索引表的 Block Range Stats 个数,降低内存占用并提升查询性能。

·支持行存超大事务写入

突破原有事务大小限制,通过优化存储和日志机制,大幅提升单次事务可处理的数据容量,满足大规模数据写入和高复杂度业务场景需求。

·Region 元信息架构优化

将 Region 元信息管理从上层下沉至 TDStore 存储层,实现 Range 元信息的持久化存储和主备一致性保障,有效减少上层与存储层的交互开销,降低路由表大小并提升 Region 分裂合并性能,优化系统整体数据一致性和运行效率。

·将 CDC 节点的持久化数据从 data_db 迁移至独立的 binlog_info_db

为提升存储架构的规范性与兼容性,将 CDC (Change Data Capture) 节点用于记录 Binlog 同步位点等信息的列族 (CF) 从共享的 data_db 中迁移至新建的、独立的 binlog_info_db。升级流程包含数据自动迁移。

·优化快照安装(Install Snapshot)时数据准备的性能,避免大规模 L0->L1 强制合并

针对在 L0/L1 层数据量大的节点上执行快照安装(如迁移、分裂)时,因强制触发 L0 到 L1 的 manual compaction 导致长时间阻塞和缓写的问题,优化了快照数据准备流程。新方案避免了大规模的强制合并,提升了快照准备的效率和系统稳定性。

·实施 TDStore KV 分离存储引擎系列性能优化

针对 KV 分离架构在长期运行后可能因 Blob 文件过多、Compaction 压力大而导致读写性能下降的问题,实施了一系列深度优化。包括优化 Blob 文件合并与垃圾回收 (GC) 的时机与效率,支持不同层级使用不同压缩算法,并减少关键路径的锁持有时间,从而显著提升了高负载下的稳定性和吞吐量。

51、语法与功能

·优化 DDL 广播中 flush table 操作的执行策略

在 DDL 广播场景下,flush table 操作现在默认采用 DDL 优先策略,提升了 DDL 操作的执行效率和系统稳定性。

废弃参数 tdsql_enable_ddl_first_strategy,是否启用 DDL 优先策略通过参数 tdsql_ddl_block_mode 和 tdsql_ddl_recovery_block_mode 控制。

·表扫描行数统计

SQL 引擎提供基本表的扫描行数统计功能,支持准确记录查询执行过程中扫描的行数,帮助用户分析查询性能和执行计划效率。

·修复并行查询结果不一致问题

修复了并行查询 auto 模式与串行查询结果不一致的问题,确保并行查询功能的正确性和可靠性。

·myloader 新增参数 tdsql_bulk_load_allow_sk

使用 myloader 导数据时,新增参数 tdsql_bulk_load_allow_sk(默认 false),控制导入期间二级索引是否允许存在。

·引入 PQ_DISTRIBUTE 优化器 Hint,为复杂并行查询提供执行计划定制能力

新增 PQ_DISTRIBUTE Hint 语法,允许资深用户或 DBA 针对特定的 JOIN、GROUP BY、ORDER BY 或窗口函数等操作,定制其在并行执行时的数据分布与计算策略 (如 Gather、Repartition、Broadcast)。这为优化复杂并行查询计划、应对特殊数据分布场景提供了高级控制手段。

·提供机制允许用户指定存储过程函数 (SP Function) 下推至并行 Worker 执行

为提升并行查询的灵活性,新增通过函数注释 (COMMENT) 来声明其在并行计划中的下推策略。用户可在注释中添加如 TDSQL_PROPERTY: {"parallel_safe": "safe"} 的字符串,将原本默认不能下推的自定义存储过程函数标记为可安全下推,从而使其能参与并行计算,优化查询性能。

·扩展并行查询能力以支持非标量非关联子查询 (Uncorrelated Subquery) 的执行

增强了并行查询引擎的功能,使其能够支持包含非标量 (多行多列,并且在计划里使用了 materialization 执行策略) 且非关联子查询的复杂 SQL 语句并行执行。通过为 SUBQUERY Hint 引入新的参数 (PQ_PRE_EVALUATION 和 PQ_INLINE_EVALUATION) 和利用内部临时表共享子查询结果,提升了此类查询在分布式环境下的处理效率。

52、稳定性

·修复 SET PERSIST 对部分 binlog_mysql 相关配置变量的联动更新问题

修复了使用 SET PERSIST 命令持久化修改数据库参数时,未能同步更新所有相关的 binlog_mysql 配置项的问题,确保配置变更的完整性和一致性。

·LogService 回放逻辑优化与订阅任务性能提升

优化 LogService 回放逻辑切换机制,支持通过 dbms_admin.switch_logservice_replay_logic 函数动态切换新旧回放逻辑,确保主备数据一致性并提升回放稳定性。同时针对订阅任务中大量 DDL 场景进行性能优化,通过在 Raft 日志写入时标识 online DDL 产生的 DML 事务,移除不必要的等待机制,有效降低 binlog dump 延迟。

·修复线程初始化异常导致的崩溃问题

修复了线程初始化时全局系统变量为空导致崩溃的问题,确保线程正常初始化。

·支持事务提交 RPC 超时参数独立配置

新增参数支持单独为事务 commit RPC 设置超时时间,可有效规避因 TDStore 缓写导致的提交超时问题,提升事务稳定性。

·优化垂直扩缩容期间的连接闪断问题

针对垂直扩缩容期间连接中断次数超出预期的问题(例如3节点场景下出现3次中断,而非预期的1次),本次更新进行了专项优化。目标是减少或平滑处理扩缩容过程中对客户端连接的影响,提升业务在资源弹性调整期间的连续性和体验。

·扩展 LogReceiver 内存统计与限制范围

本次更新扩展了 LogReceiver 组件对 Raft Log 拉取过程的内存统计和限制范围。原有机制仅覆盖从 COS(对象存储)拉取日志的链路,现将其余从其他 TDStore 节点拉取日志的链路也纳入统一的内存统计和限制流程。此优化旨在更全面地控制日志恢复过程中的内存使用,避免因日志拉取导致的内存压力,提升集群在节点恢复、副本迁移等场景下的稳定性。

53、备份恢复

·优化物理备份回档的节点数据分布均衡性

修复了在物理备份回档过程中节点选择算法的均衡性问题,避免数据集中到少数节点,显著提升了大规模数据恢复的整体速度。

·优化回档实例参数一致性

回档实例现在会自动继承原实例的参数配置,确保回档后的数据库实例与原实例在参数设置上保持一致,提升数据恢复的准确性和一致性。

·支持增量备份数据完整性校验

MC-Agent 提供数据完整性校验接口,可通过该接口对 MC 增量备份的数据进行完整性验证,确保备份数据准确可靠,提升备份恢复的安全性和可信度。

54、安全增强

·支持 SSL 连接加密

新增数据库连接 SSL 加密功能,支持数据传输加密保护,提升连接安全性。

55、运维

·新增 DBBrain 死锁可视化诊断能力

本次更新在 DBBrain 异常诊断中新增"死锁"诊断项。该功能基于系统表 INFORMATION_SCHEMA.TDSTORE_PESSIMISTIC_DEADLOCK_DETAIL_INFO(内核版本 ≥ 21.2.0),可查询并展示死锁环的详细信息,包括回滚事务 ID、申请/阻塞事务 ID、涉及的锁范围及对应的 SQL 语句,帮助用户快速定位导致死锁的业务 SQL 和资源竞争点,提升问题排查效率。

·引入全链路诊断与跟踪 (Trace) 能力,优化问题定位效率

在数据库中引入结构化的全链路追踪框架,支持对慢查询 (例如超过1秒) 自动记录完整的调用链信息。通过系统表或工具可生成可视化诊断报告,帮助运维和开发人员快速定位 SQL 执行、RPC 通信及内部处理过程中的性能瓶颈与异常。

·为 Shark 灾备切换/断开任务设置超时告警与回滚机制

针对灾备切换或断开流程中可能因任务卡住而导致主实例长期处于只读状态的风险,建立了任务超时告警机制,并引入了失败或超时情况下的自动回滚流程。该优化确保了在异常情况下能够及时恢复主实例的写入能力,提升了灾备操作的可靠性。

·新增 MC 感知变配并自动调整表分布功能

本次更新引入一项新功能:元数据控制器(MC)能够感知集群的垂直扩缩容(变配)事件,并自动触发对分区表及非分区表的数据分布进行调整。该功能旨在减少变配后的人工干预,提升集群资源利用率和负载均衡的自动化水平。

·增强 MC 注册节点规范管理

优化 MC 注册节点流程,增加 RPC version 校验机制,提升节点注册的安全性和兼容性。

·新增复制组(RG)日志文件大小的监控指标与告警能力

新增监控指标 rep_group_log_size_bytes,通过 MC Agent 上报每个 Raft Node 的本地日志文件大小。此指标可用于监控日志文件的增长趋势,当文件持续增大时(通常意味着日志清理失败)可触发告警,帮助运维人员及时发现因备份、CDC 或 Follower 异常导致的日志堆积问题。

·优化慢日志默认存储路径

将慢日志默认存储路径修改至日志盘,避免与数据层共用存储导致调度误判,提升系统稳定性与日志管理工作效率。

56、问题修复

·修复 raft log 存储从 multi-raft-db 转换到 segment 存储类型时因 RG ID 超过 int32 范围导致的节点崩溃问题。

·修复 INFORMATION_SCHEMA.LOGSERVICE_MYSQL_UNSUPPORTED_TABLE 视图错误包含视图类型表的问题。

·修复批量键值范围构造过程中因路由变化导致的系统崩溃问题。

·修复回档实例热点调度失效问题,确保回档后的数据分布均衡。

·修复行锁超时参数 tdsql_lock_wait_timeout 设置不生效的问题,实际超时时间受 RPC 超时限制而非参数设置值。

·修复 LogService 同步 UK 时可能发生的死锁问题。

·修复部分系统变量候选值展示不准确的问题,包括字符集客户端变量展示过多无效字符集、utf8mb4 排序规则变量展示非该字符集的排序规则,以及双精度边界值格式化被截断。

·修复 TDRlogBackuper 析构时存在的死锁风险,确保进程退出时所有 worker socket 能被正确中断。

·修复进程退出时因 TDRlogBackuper 未提前关闭导致访问已释放资源产生的崩溃问题。

·修复偶发场景下自动均衡触发 CDC log-receiver 搬迁与 DDL 建表约束冲突导致日志服务同步延迟的问题。

·修复了灾备实例在发生主备切换 (switchover/failover) 并与原主实例断开关系后,再次尝试建立新的主备关系时,因 MC 日志 (Rlog) 存在空洞而导致任务失败的问题。解决方案包括提供数据完整性校验接口,并在数据不完整时触发全量备份。

·修复了在容器化部署环境中,当节点的日志盘被完全写满后,SQLEngine 进程因启动过程中的日志初始化失败而无法正常启动的问题。

·修复了用户从"单 RG 模式"(所有 Leader 集中在一个节点)切换至"Leader 分散模式"后,分区表的 Leader 未能自动重新打散的问题。此问题源于模式切换操作未触发内部的 Leader 再平衡检查逻辑,导致 Leader 仍集中在原节点,无法利用所有节点资源,影响负载均衡和性能。

·修复了开启分裂(Split)特性的 Bulk Load(批量导入)任务结束后,相关副本组(RG)未正确释放占位符(placeholder)的问题。该问题会导致该 RG 的资源被持续占用,无法执行后续的迁移、平衡等任务。

·修复 MC 组件中持久化 disk leader 耗时过长导致创建数据对象失败的问题。

·修复多节点实例执行 DROP DATABASE 操作时,可能导致其他节点残留数据字典表数据的问题。

·修复内部表升级逻辑中版本兼容性问题,确保系统表在正确版本阶段进行更新。

·修复 Bulk Load 分裂任务在未完成状态下被错误标记为历史任务的问题。

·修复 promote/demote 操作过程中 raft log 跨越 snapshot 时丢失角色信息的问题。

·修复了查询优化器中因估算的扫描行数 (cost rows) 过小,导致 parallel_query_switch 的 force 开关强制并行计划失效的问题。

·修复行值构造器子查询中 NULL 值处理不当导致查询结果错误的问题。

·修复 Stop EngineAgent 脚本中获取进程号函数因残留进程导致进程号错误的问题。

·修复克隆集群过程中未全程保证开关关闭的问题。

·修复了在合并空资源组时未检查副本角色一致性导致合并操作失败的问题。

·修复了节点资源组缓存清理机制中,在被动中止阶段结束后未正确清理节点记录的缺陷。

·修复 DP 规则变更时 MC 短时间内连续下发相同切主任务导致切主失败的问题。

·修复热点调度默认仅参考 bytes 作为度量指标导致调度策略不够全面的问题。

·修复数据均衡功能在迁移过程中从源节点迁移过多数据的问题。

·修复在 n+1 架构下使用广播同步表时,当 quorum 值大于节点数 n 时广播资源组在变配过程中卡住的问题。

·修复 TDStore 之间 RPC 调用时使用错误超时时间配置的问题。

57、语法变更

变更类型 语法 说明
新增 SELECT * FROM tdsql_force_dist_shard(INFORMATION_SCHEMA.processlist); 新增 tdsql_force_dist_shard 关键字,作用在表上,表示按 shard 表模式生成并行计划,获取全局的数据,一般对 processlist 这类内存表使用。

58、数据字典变更

变更类型 系统表和系统视图 说明
修改 DATA_LOCKS OBJECT_SCHEMA 列的值从 NULL 变更为表对应的 database 名称。OBJECT_NAME 列的值从 NULL 变更为表名称。
新增 VIEW_RESOURCE_TAG 引入工作线程分组功能后,VIEW_RESOURCE_TAG 视图用来记录系统中配置的各个业务类型的工作线程分组信息,包括分组标识、线程数量以及配置状态,帮助用户了解系统资源分配情况。
新增 VIEW_RESOURCE_TAG_THREAD_INFO 引入工作线程分组功能后,VIEW_RESOURCE_TAG_THREAD_INFO 视图用于实时监控工作线程级别的任务队列状态。该视图展示了每个工作线程的任务积压情况,帮助用户深入了解系统内部任务调度和负载分布。
修改 TDSTORE_PESSIMISTIC_DEADLOCK_DETAIL_INFO timestamp 字段改名为 occurred_at,类型从 varchar 改为 timestamp。
修改 TDSTORE_PESSIMISTIC_DEADLOCK_INFO timestamp 字段改名为 occurred_at,类型从 varchar 改为 timestamp。
赞 (0)
上一篇 4天前
下一篇 4天前