帮你快速理解、总结文档立即下载

V21.6.x

最近更新时间:2026-08-20 16:32:00
我的收藏

V21.6.4.0

版本更新说明

数据库管理

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_INFOTDSTORE_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 查询,便于客户监控数据库锁等待和事务性能。

扩展性与性能

优化分区表 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 回放性能。
优化分区表 BKA Join 并行预取性能
通过并行化分区表 BKA Join 的 RPC 请求,将串行执行改为并行预取,显著降低多分区场景下的查询延迟,提升索引关联查询性能。
完善对象存储冷热数据分离架构功能
增强 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 等写入场景的性能。

语法与功能

子查询消除能力增强
将原有的 EXISTS 子查询消除规则扩展为通用的子查询消除能力,新增对 IN、ANY、ALL 谓词子查询的消除支持,在满足安全条件时直接将子查询折叠为布尔常量,避免不必要的子查询执行开销,提升查询优化效率。
TDSQL Boundless 与 goInception 工具链兼容性优化
增强 TDSQL Boundless 与 goInception SQL 审核工具的兼容性,优化 binlog 事件头部 thread_id 透传机制,确保 QUERY_EVENTthread_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 标准行为对齐。

稳定性

修复 agent 上报的 alive 指标准确性
修复监控 agent 上报的 alive 指标与节点实际状态不一致的问题,确保监控系统能够准确反映节点健康状态,避免误判导致运维响应延迟。
修复并行查询子查询过滤错误问题
修复了并行查询模式下子查询过滤条件评估错误的问题,确保查询结果与串行执行一致,同时解决了相关内存安全问题提升系统稳定性。
修复系统表并行查询报错问题
优化分片表查询的优化器策略,避免在分布式执行场景下因常量表提取导致并行计划无法生成,解决系统表分片查询报错问题。
灾备同步过程中主备实例 sql_mode 一致性保证
通过将 sql_mode 纳入集群全局变量管控体系,在灾备模式下默认禁止修改 sql_mode 以保证主备一致性,同时提供 loose 模式供管理员紧急放行,避免因主备 sql_mode 不一致导致的 Binlog 回放失败和同步中断问题。
新增 MC 模块运行时死锁检测工具
通过编译时 AST 分析和运行时低开销检测机制,系统性发现 MC 调度模块中的锁顺序不一致问题,提升系统稳定性,检测开销控制在200-600 ns 级别。

备份恢复

回档实例数据分布优化
优化回档流程,当回档实例与原实例节点数量一致时,确保数据分布完全还原,提升回档数据一致性。
支持 HyperNode 元数据增量备份与异步补偿机制
新增 HyperNode 元数据变更历史的增量备份能力,在时间戳不可用时支持降级写入和异步补偿,确保克隆和回档操作能获取准确的节点标签历史分布,提升数据分布映射的求解效率。
提供基于 Binlog 的 SQL 闪回工具
验证命令行工具 mysqlbinlog_flashback_percona_auto,支持从 Binlog 反向解析生成恢复 SQL,实现行级误操作数据的快速恢复,无需依赖全量备份或创建新实例。

数据迁移

优化 Myloader 导入兼容性
调整 Myloader 工具在数据导入时的默认行为,不再执行 SET GLOBAL 参数设置操作,避免因高权限账号缺少 SYStem_variables_admin 权限而导致导入失败,提升数据迁移场景的兼容性。
修复 LogService MySQL 模式自增列 0 值回放不一致问题
优化 LogService MySQL 模式的 SQL 生成逻辑,在自增列值为 0 时自动注入 optimizer hint 临时设置 NO_AUTO_VALUE_ON_ZERO 模式,确保上下游数据一致性并避免自增计数器溢出导致的同步卡死问题。

安全增强

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

运维

优化 tdmc 软件包体积
移除 tdmc 软件包中 tools 目录下的工具,该目录约 650 MB,相关工具已通过其他途径发布,减少镜像体积以提升部署效率。
新增 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 子命令实现统一元数据管理,显著提升故障恢复能力和运维效率。

问题修复

修复了同一条 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 查询在数据分布稀疏场景下的性能回退问题

参数变更

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

语法变更

变更类型
语法
说明
新增
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)配置。
新增
支持 RANGE 间隔分区,可按间隔值自动新增分区。
新增
包含列索引(ICI)VALUE() 子句
二级索引支持包含列(Included Column Index),可在索引中定义 VALUE() 包含列。
新增
EXPLAIN ANALYZE ... VERBOSE / RPC 选项
EXPLAIN ANALYZE 新增 VERBOSERPC 统计选项,用于输出更详细的执行与 RPC 耗时信息。
新增
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 子句。
变更
保留字 LEADLAG 由保留字改为非保留字
LEADLAG 不再作为保留关键字,可用作标识符;依赖其保留属性的旧 SQL 需评估。

数据字典变更

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

错误码变更

变更类型
错误码
错误消息
新增
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.

V21.6.3.0

版本更新说明

数据库管理

优化 RocksDB 数据格式版本默认值设置
tdstore_rocksdb_data_format_version 参数默认值从 ROCKSDB_DATA_FORMAT_VERSION_UNKNOWN 改为 ROCKSDB_DATA_FORMAT_VERSION_1,并引入跳板升级策略确保存量实例安全升级,为后续性能优化功能提供基础支持。
新增客户端出入流量监控指标
新增 Bytes_sentBytes_received 指标的监控能力,支持展示数据库实例的客户端出入流量,便于运维监控和容量规划。
新增 SQL 语句级资源隔离能力
支持通过 SQL 文本精确匹配或正则匹配规则,将特定 SQL 路由到指定 worker-thread 资源组执行,实现更细粒度的 SQL 级别资源管控,提升多租户环境下的资源隔离效果。
新增会话级分布式查询限制功能
新增 max_partition_access 系统变量,支持按会话动态限制事务可访问的复制组数量,防止误发分布式查询导致的性能问题。
新增分布式查询监控统计功能
performance_schema.events_statements_summary_by_digest 表中新增 SUM_DISTRIBUTED 列,用于统计 SQL 语句以分布式方式执行的次数,便于 DBA 识别和优化跨 shardkey 查询。
新增分布式查询日志记录功能
新增系统变量 log_queries_distributed,开启后可将所有分布式查询记录到慢查询日志中,并提供 Logged_reason 字段区分记录原因,增强分布式查询的可观测性。

扩展性与性能

支持 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 迁移功能,支持资源再均衡和容灾切换,迁移过程保持数据一致性,提升集群运维灵活性。

语法与功能

支持 LogService 开启时的多表 DDL 操作
解除 LogService 新回放逻辑开启状态下对多表 DDL 的限制,支持多表 DROP TABLERENAME TABLE 操作,确保主备数据一致性。
分区表全局二级索引 (GSI) 功能实现
RocksDB 分区表中实现全局二级索引 (GSI) 功能,支持 GLOBAL INDEX 语法定义、DML 写入维护、跨分区唯一性检查、查询优化以及分区 DDL 联动。该功能显著提升非分区键查询性能,支持全局唯一约束,优化器可自动选择 GSI 扫描路径,同时提供 UPDATE GLOBAL INDEXES 子句确保 DROP/TRUNCATE 分区操作后索引可用性。

稳定性

优化 schema 不存在错误处理机制
修复读写场景下 EC_TDS_SCHEMA_NOT_EXIST 错误码的重试逻辑,避免无效重试导致的连接丢失问题,提升业务可用性。
ETCD raft 层支持从配置文件动态更新集群节点配置
修复 MC 节点迁移场景下 ETCD raft 层使用旧 IP 端口配置的问题,确保节点重启后能够正确使用新的网络配置,提升集群稳定性。

备份恢复

修复 MC 元数据增量备份临时文件清理问题
优化增量备份流程,自动清理备份过程中产生的临时文件,避免磁盘空间占用和备份失败问题。
优化物理恢复 COS SST 文件下载超时机制
修复 COS SDK 下载超时硬编码问题,将 HTTP Client Timeout 从固定30秒改为动态计算,确保与32MB PartSize 匹配,提升大文件下载成功率。

问题修复

修复 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 过滤效果,提升索引选择准确性

参数变更

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

语法变更

变更类型
语法
说明
新增
CREATE TABLE / ALTER TABLE 支持新增表选项 STORAGE_TIER = {AUTO_STORAGE | LOCAL_STORAGE | OBJECT_STORAGE},用于声明表或分区的存储层级。例如:CREATE TABLE t1 (...) STORAGE_TIER = LOCAL_STORAGE;
新增
ALTER TABLE 支持在分区级别修改存储层级:ALTER TABLE t1 MODIFY PARTITION (p1) STORAGE_TIER = OBJECT_STORAGE;
新增
分区表上支持全局二级索引(GSI)。CREATE INDEXCREATE TABLE 中索引定义可追加 GLOBAL 关键字声明全局索引。
新增
ALTER TABLEDROP PARTITION / TRUNCATE PARTITION 语句支持新增 UPDATE GLOBAL INDEXES 子句,用于修改分区的同时重建 GSI。示例:ALTER TABLE t1 DROP PARTITION p1 UPDATE GLOBAL INDEXES;
新增
新增范围缓存 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_RANGEPARTITION),用于声明分区并行扫描策略。原 PARALLEL(n) 语义保持兼容。

数据字典变更

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

V21.6.1.0

版本更新说明

数据库管理

新增热点数据监控能力
新增 INFORMATION_SCHEMA.META_CLUSTER_HOT_DATA_OBJECTS_HISTORY 系统表,用于记录数据对象的热度统计信息,包括字节速率、键速率、查询速率以及热度等级等指标;同时优化 TDStore 模块的指标统计和上报机制,完善 bytes_readbytes_writekeys_readkeys_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 BYORDER BY 等聚合操作以及 JOIN 操作在全局层面进行,返回跨所有节点的统一聚合结果,而非每个节点的独立结果集,满足了跨节点统计分析的需求。
performance_schema.data_locksperformance_schema.data_lock_waitsINFORMATION_SCHEMA.processlistINFORMATION_SCHEMA.tdstore_part_ctxINFORMATION_SCHEMA.tdstore_compaction_historyINFORMATION_SCHEMA.tdstore_active_compaction_statsINFORMATION_SCHEMA.tdstore_sst_propsINFORMATION_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 对并行查询计划的展示。现在,输出结果会包含每个并行工作线程的实际执行时间、处理行数等明细信息,并对排序、哈希连接、聚合等关键节点补充内存使用量、临时表大小等定制化性能指标。该功能为深入分析并行查询各阶段的负载均衡与资源消耗提供了有力工具。

扩展性与性能

优化 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) 的时机与效率,支持不同层级使用不同压缩算法,并减少关键路径的锁持有时间,从而显著提升了高负载下的稳定性和吞吐量。

语法与功能

优化 DDL 广播中 flush table 操作的执行策略
在 DDL 广播场景下,flush table 操作现在默认采用 DDL 优先策略,提升了 DDL 操作的执行效率和系统稳定性。
废弃参数 tdsql_enable_ddl_first_strategy,是否启用 DDL 优先策略通过参数 tdsql_ddl_block_modetdsql_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 BYORDER BY 或窗口函数等操作,定制其在并行执行时的数据分布与计算策略 (如 Gather、Repartition、Broadcast)。这为优化复杂并行查询计划、应对特殊数据分布场景提供了高级控制手段。
提供机制允许用户指定存储过程函数 (SP Function) 下推至并行 Worker 执行
为提升并行查询的灵活性,新增通过函数注释 (COMMENT) 来声明其在并行计划中的下推策略。用户可在注释中添加如 TDSQL_PROPERTY: {"parallel_safe": "safe"} 的字符串,将原本默认不能下推的自定义存储过程函数标记为可安全下推,从而使其能参与并行计算,优化查询性能。
扩展并行查询能力以支持非标量非关联子查询 (Uncorrelated Subquery) 的执行
增强了并行查询引擎的功能,使其能够支持包含非标量 (多行多列,并且在计划里使用了 materialization 执行策略) 且非关联子查询的复杂 SQL 语句并行执行。通过为 SUBQUERY Hint 引入新的参数 (PQ_PRE_EVALUATIONPQ_INLINE_EVALUATION) 和利用内部临时表共享子查询结果,提升了此类查询在分布式环境下的处理效率。

稳定性

修复 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 节点拉取日志的链路也纳入统一的内存统计和限制流程。此优化旨在更全面地控制日志恢复过程中的内存使用,避免因日志拉取导致的内存压力,提升集群在节点恢复、副本迁移等场景下的稳定性。

备份恢复

优化物理备份回档的节点数据分布均衡性
修复了在物理备份回档过程中节点选择算法的均衡性问题,避免数据集中到少数节点,显著提升了大规模数据恢复的整体速度。
优化回档实例参数一致性
回档实例现在会自动继承原实例的参数配置,确保回档后的数据库实例与原实例在参数设置上保持一致,提升数据恢复的准确性和一致性。
支持增量备份数据完整性校验
MC-Agent 提供数据完整性校验接口,可通过该接口对 MC 增量备份的数据进行完整性验证,确保备份数据准确可靠,提升备份恢复的安全性和可信度。

安全增强

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

运维

新增 DBBrain 死锁可视化诊断能力
本次更新在 DBBrain 异常诊断中新增"死锁"诊断项。该功能基于系统表 INFORMATION_SCHEMA.TDSTORE_PESSIMISTIC_DEADLOCK_DETAIL_INF
O(内核版本 ≥ 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 异常导致的日志堆积问题。
优化慢日志默认存储路径
将慢日志默认存储路径修改至日志盘,避免与数据层共用存储导致调度误判,提升系统稳定性与日志管理工作效率。

问题修复

修复 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 调用时使用错误超时时间配置的问题。

语法变更

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

数据字典变更

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