V21.6.x

最近更新时间:2026-05-18 17:35:33

我的收藏

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