TiDB 8.5.7 Release Notes
发版日期:2026 年 7 月 9 日
TiDB 版本:8.5.7
新功能
性能
支持基于 TiKV CPU 使用情况的热点 Region 调度,以提升读取负载均衡能力 #5718 #19373 @lhy1024
在之前的版本中,热点 Region 调度器主要基于查询速率和字节吞吐量来平衡读取热点。在某些工作负载下,即使 QPS 和字节吞吐量看似均衡,TiKV 的 CPU 使用量仍可能不均匀,例如不同查询的 CPU 开销差异较大,或不同 TiKV 节点的性能特征不同。
从 v8.5.7 起,TiKV 会在 store heartbeat 中上报热点 Region 的读取 CPU 使用量,PD 可以将 CPU 使用量作为读取热点 Region 调度的一个维度。借助这一机制,PD 能更准确地识别基于 CPU 的读取热点,并在各个 TiKV store 之间进行均衡。
此外,PD 新增了与 CPU 相关的热点统计信息和调度器控制项,包括 hot store statistics 中的
cpu-read-rate字段,以及min-hot-cpu-rate和cpu-rate-rank-step-ratio调度器配置。更多信息,请参考用户文档。
稳定性
支持限制 TiDB 实例中单个用户可建立的连接数 #59203 @joccau
从 v8.5.7 开始,你可以使用系统变量
max_user_connections限制单个用户在单个 TiDB server 实例上可建立的最大连接数。这有助于防止某个用户过度消耗 token,从而导致其他用户的请求响应出现延迟。此外,你也可以在
CREATE USER和ALTER USER语句中使用WITH MAX_USER_CONNECTIONS N限制对应用户允许登录的最大连接数。更多信息,请参考用户文档。
SQL 功能
支持部分索引,以降低索引存储成本,减少 DML 维护开销 #62664 #62761 #62758 #63447 #64344 @YangKeao @winoros @wjhuang2016
从 v8.5.7 起,TiDB 支持部分索引。部分索引仅为满足索引
WHERE子句中谓词条件的行创建索引项。你可以通过CREATE INDEX ... WHERE ...、ALTER TABLE ... ADD INDEX ... WHERE ...,或在CREATE TABLE中定义索引的方式创建部分索引。当你经常需要查询符合特定条件的部分行时,或者需要仅在特定条件下生效的唯一约束时,部分索引会非常有用。由于不满足谓词条件的行不会被写入索引,部分索引有助于节省索引存储空间,同时降低
INSERT、UPDATE和DELETE操作期间的索引维护成本。为了更有效地使用部分索引,在定义部分索引时,建议使用与你常用查询的过滤条件相匹配的谓词。只有当查询中的谓词与部分索引的谓词匹配或满足部分索引的谓词条件时,TiDB 才会选择使用部分索引。目前,部分索引谓词支持基本比较运算符(
=、!=、<、<=、>、>=)、IS NULL、IS NOT NULL,以及带常量值的IN谓词。更多信息,请参考用户文档。
可观测性
TiDB Dashboard 的 Top SQL 页面支持收集和展示 TiKV 网络流量和逻辑 I/O 指标 #62916 @yibin87
在之前的版本中,TiDB Dashboard 在识别 Top SQL 时仅基于 CPU 相关指标,在复杂场景下难以从网络或存储访问角度定位性能瓶颈。
从 v8.5.7 起,你可以在 Top SQL 设置中打开 TiKV 网络 IO 采集(多维度)开关,以查看 TiKV 节点的
Network Bytes和Logical IO Bytes等指标,并可以按By Query、By Table、By DB或By Region维度进行聚合分析,从而更全面地定位资源消耗热点。更多信息,请参考用户文档。
数据迁移
DM 支持静态一对一 schema/table 路由场景下的外键因果依赖 #12350 @OliverS929
从 v8.5.7 开始,当
foreign_key_checks=1且syncer.worker-count > 1时,DM 支持静态一对一 schema/table 路由场景下的外键因果依赖。在同步任务启动前,必须先在下游创建目标 schema 和外键定义。该功能不支持多对一或分片合并路由,不支持同步过程中的动态外键 DDL,不支持
syncer.compact或syncer.multiple-rows等会改变 DML 语句边界的选项,也不支持在 safe mode 下同步修改主键或唯一键值的UPDATE语句。启用外键因果依赖后,DM 也不支持通过热更新方式修改worker-count、case-sensitive、route rules、block-allow-list rules、binlog filter rules 或foreign_key_checks。如需修改这些配置,请先停止任务,更新配置后再重新启动任务。更多信息,请参考用户文档。
TiCDC 支持表路由 #4655 #4941 #4702 @3AceShowHand
从 v8.5.7 起,TiCDC 新架构支持表路由功能。你可以在 Changefeed 的
sink.dispatchers配置中使用target-schema和target-table,将上游表映射到指定的下游库名或表名。该功能适用于下游库表命名规范与上游不一致,或需要将多个源库同步到同一个目标库并保持目标表名唯一的场景。通过表路由,你可以为下游系统提供稳定且符合预期的目标库表名。
该功能仅适用于 TiCDC 新架构。更多信息,请参考用户文档。
兼容性变更
对于新部署的 TiDB v8.5.6 集群(即不是从之前的版本升级而来的 v8.5.6 集群),你可以平滑升级到 v8.5.7。v8.5.7 的大多数变更对常规升级是安全的,但本版本仍包含若干行为变更、MySQL 兼容性变更、系统变量变更、配置参数变更以及废弃功能。在升级前,请务必仔细阅读本节内容。
行为变更
- TiKV 现在默认会拒绝已确认无效的
max_ts更新请求,而不再仅记录日志。此变更可以阻止无效时间戳更新,同时避免 TiKV panic,提升了安全性。如需保留此前仅记录日志的行为,请将storage.max-ts.action-on-invalid-update设置为log#19755 @ekexium - 从 v8.5.7 起,TiDB 默认启用 Optimizer Fix Controls
52869。该变更允许优化器在存在备选索引时自动考虑IndexMerge,因此在某些情况下可能改变查询执行计划 #26764 @time-and-fate
MySQL 兼容性
支持解析横向派生表的
LATERAL语法,以提升与 MySQL 8.0 的兼容性,包括用逗号连接、CROSS JOIN LATERAL和INNER JOIN LATERAL等常见用法当前,TiDB 仅支持解析
LATERAL派生表语法,暂不支持执行使用该语法的查询。如果你尝试执行此类查询,TiDB 会返回错误。你可以在 issue #40328 中跟踪该功能完整执行能力的进展。支持在
CREATE USER和ALTER USER中使用WITH MAX_USER_CONNECTIONS N,以提升与 MySQL 的兼容性。TiDB 同时在mysql.user中新增max_user_connections列,并允许你使用max_user_connections系统变量控制单个用户在 TiDB server 实例上可建立的最大连接数。
系统变量
配置参数
编译器版本
- 为了提升 TiDB 性能,TiDB 的 Go 编译器版本从 go1.25.8 升级到了 go1.25.10。如果你是 TiDB 的开发者,为了确保顺利编译,请对应升级你的 Go 编译器版本。
- 为了提升 TiKV 性能,TiKV 的 Rust 编译器版本从 nightly-2023-12-28 升级到了 nightly-2025-02-28。如果你是 TiKV 的开发者,为了确保顺利编译,请对应升级你的 Rust 编译器版本。
废弃功能
- 从 v8.5.7 开始,TiDB 和 TiDB Dashboard 中的遥测功能已废弃。
移除功能
从 TiDB v8.5.7 开始,TiDB Lightning 不再支持 Web 界面 #67697 @D3Hunter
如需使用 TiDB Lightning 导入数据,请改用 TiDB Lightning 命令行工具:用于执行导入任务的
tidb-lightning,以及用于执行断点检查和故障排查的tidb-lightning-ctl。对于新的数据导入工作负载,你也可以使用
IMPORT INTO语句。如果此变更影响到你的工作流,请在 #67697 中反馈。
改进提升
TiDB
- 提升包含
OR和IN条件的ORDER BY ... LIMIT查询性能。优化器现在可以更有效地选择IndexMerge,并支持在IndexMerge的IN条件路径上使用 merge sort,从而将Limit下推到部分路径,减少不必要的行读取和 I/O 开销 #65712 @time-and-fate - 改进慢查询可观测性,在 slow query log 中记录客户端连接属性,并可在
INFORMATION_SCHEMA.SLOW_QUERY和INFORMATION_SCHEMA.CLUSTER_SLOW_QUERY中查询这些属性;performance_schema_session_connect_attrs_size现用于控制属性截断,并将被截断的字节数记录在_truncated中 #66616 @jiong-nba - 新增系统变量
tidb_enable_strict_not_null_check,用于控制 TiDB 是否对单行INSERT语句执行严格的NOT NULL检查,从而帮助依赖此前非严格行为的工作负载降低升级风险 #68108 @xhebox - 提升 runaway query watch 处理的性能和稳定性,包括更可靠的 TiDB 实例间 watch 同步,以及更高效的后台 flush 和 sync #65746 @JmPotato
- 新增全局系统变量
tidb_enable_batch_query_region,用于控制 TiDB 是否向 PD 批量查询 Region 信息,从而提升获取 Region 信息的效率;该变量默认关闭 #58439 #8690 @JmPotato - 改进多索引表查询的优化器性能,通过在代价估算前裁剪无关索引,降低查询规划时间,并避免不必要的全范围越界估算 #63856 @terry1purcell @qw4990
- 增强 Blackbox exporter dashboard 中的 Ping Latency 面板,通过使用
max_over_time告警规则新增Max Ping Latency指标。该变更使 dashboard 展示与 TiDB 告警逻辑保持一致,有助于更容易地识别延迟峰值并验证告警触发情况 #1071 @yibin87 - 支持在匹配的前缀索引上对
ORDER BY ... LIMIT/OFFSET查询进行部分有序索引优化。当tidb_opt_partial_ordered_index_for_topn设置为COST时,TiDB 可利用索引的部分有序性减少全表扫描并提升TOPN查询性能 #63280 #65813 #66338 @elsa0520 @xzhangxian1008 @winoros - 优化使用 Stream Aggregate 的高基数
GROUP BY查询性能,通过降低内存跟踪中的 CPU 开销实现 #68475 @guo-shaoge - 缓解高分区数且带本地索引的表上
IndexLookUp查询的 coprocessor 请求突发问题,以提升查询稳定性并减少性能抖动 #67545 @gengliqi - 优化
INSERT ... ON DUPLICATE KEY UPDATE语句的 CPU 和内存使用,通过减少执行过程中不必要的表达式缓冲区分配实现 #65003 @windtalker - 优化包含大型
IN列表语句的查询规划性能,通过降低 range building 过程中的 CPU 和内存开销实现 #67756 @winoros - 提升自动
ANALYZE的默认性能和一致性,使tidb_auto_build_stats_concurrency和tidb_sysproc_scan_concurrency的默认值与手动ANALYZE对齐 #67195 @0xTars - 新增系统变量
tidb_opt_enable_alternative_logical_plans,用于启用针对子查询去关联的替代逻辑计划优化 #66676 @AilinKid - 新增系统变量
tidb_enable_cache_prepare_stmt,用于缓存同一会话中重复执行的预处理语句,从而降低 prepare-per-request 工作负载的 CPU 开销 #67815 @guo-shaoge - 改进 Join Reorder,使 TiDB 能处理 join group 之间的 projection,减少不必要的 Cartesian Join,并让
LEADINGHint 在更多查询中生效 #50229 @Reminiscent - 支持在
LEADINGoptimizer hint 中使用嵌套括号来指定更复杂的连接顺序,例如LEADING((a, b), (c, d))#63253 @guo-shaoge - 改进 Join 执行计划选择,避免在估算 probe 行数接近全表扫描时选择低效的 index join,从而提升某些
HASHAGG+ join 场景下的查询性能 #67610 @qw4990 - 提升嵌套
OR条件查询的性能,通过启用更高效的IndexMerge计划,并允许移除冗余全局过滤条件以便下推LIMIT#65822 @time-and-fate - 支持
FLUSH STATS_DELTA语句,用于持久化全部、数据库级或表级范围内待写入的优化器统计信息增量 #65668 @0xPoe - 改进查询优化,默认启用用于在存在备选索引时考虑
IndexMerge的优化器修复控制项,使 TiDB 能在更多适用查询中选择IndexMerge计划 #26764 @time-and-fate - 支持缓存使用
set_var和resource_groupHint 的预处理与非预处理查询,以提升带 Hint 查询的 plan cache 命中率 #60920 @qw4990 - 优化使用
IndexMerge的ORDER BY ... LIMIT和ORDER BY ... TOPN查询,在可能的情况下将Limit或TopN下推到各个 partial path,从而减少某些查询计划中不必要的扫描和排序 #68773 @time-and-fate - 在新初始化的集群中,通过为
mysql.stats_*系统表使用聚簇主键来提升ANALYZE性能 #66751 @0xPoe - 改进优雅关闭处理,通过对
COM_PING请求返回错误,让代理和负载均衡器能够检测到 TiDB server 正在关闭,并停止发送新连接 #58007 @dveeden - 加速包含大量生成列的表上的
INSERT语句,显著提升宽表工作负载的性能 #67916 @bb7133 - 支持在 TiDB Dashboard 的 Slow Query 页面查看会话连接属性,包括可选的列表列和专用详情页签,同时兼容不提供该字段的早期 TiDB 版本 #1899 @yibin87
- 改进事务时间戳校验,通过对非 TiDB 请求执行精确的 max-ts 检查,降低外部组件错误使用未来时间戳的风险 #68799 @ekexium
- 优化自动提交的乐观事务,在首次执行时跳过锁解析,从而降低高冲突场景下的延迟 #58675 @ekexium
- 提升包含
TiKV
- 新增动态资源组隔离,通过降低超过历史 RU 基线的资源组请求优先级,并在高 CPU 负载下可选择延迟或拒绝超基线请求,以保护持续性工作负载免受流量突发影响;相关新的
resource-control配置项默认关闭 #19607 @mittalrishabh - 对所有 TiKV 后台资源组使用全局速率限制器,并聚合相关后台资源管控指标而不再使用
resource_group标签,因此受影响的 dashboard 和告警需要相应更新 #19497 @mittalrishabh - 改进 TiKV Unified Read Pool 的调度公平性,当队列已满时允许高优先级请求驱逐低优先级排队任务,从而帮助在租户流量和后台流量之间实现更公平的资源分配 #19386 @mittalrishabh
- 在 apply log 处理期间,为 PITR 恢复产生的
Put和Deletewrite CF 记录打上物理导入事务来源标记,使 TiCDC 可以忽略 PITR 导入的数据 #19669 @YuJuncen - 为检测到磁盘 I/O 卡顿的 TiKV 节点新增自动快速退出机制,以加快无响应 store 的恢复 #19626 @hbisheng
- 通过升级 TiKV 8.5 中存在漏洞的第三方依赖并同步上游所需兼容性修复,提升 TiKV 的稳定性和安全性 #19713 @LykxSassinator
- 支持 TiKV 中基于 rank 的 limit 处理,以便在使用 truncate key expression 的查询中返回更准确的结果 #19388 @xzhangxian1008
- 改进 TiKV 中基于负载的 Region 分裂,通过放宽默认分裂阈值,并增强 split-key 选择和 CPU fallback 决策的可观测性,帮助运维人员更有效地处理热点 Region #18932 @lhy1024
- 新增动态资源组隔离,通过降低超过历史 RU 基线的资源组请求优先级,并在高 CPU 负载下可选择延迟或拒绝超基线请求,以保护持续性工作负载免受流量突发影响;相关新的
PD
- 新增 PD maintenance endpoints 和
pd-ctl命令,用于串行化 TiKV 维护任务,并通过确保任一时刻只有一个维护任务处于活动状态来防止 Raft quorum 丢失 #9477 @SerjKol80 @HaoW30 - 在 PD 中默认关闭 split scatter,以避免 Region split 后出现意外调度;如有需要,你仍可通过将
schedule.split-scatter-schedule-limit设置为正值来启用 #10592 @lhy1024 - 优化 unsafe recovery 中空 Region 计划的生成,以提升在包含大量 Region 和空洞的大型集群中的性能并降低超时风险 #10638 @Connor1996
- 改进 PD 事务持续时间指标,使其更准确地反映生产环境中的延迟分布,并提升 dashboard 和告警中的可观测性 #10705 @bufferflies
- 新增 PD maintenance endpoints 和
TiFlash
Tools
Backup & Restore (BR)
- 支持在 BR 中使用 Workload Identity Federation 访问 Google Cloud Storage 备份桶 #19442 @Leavrth
- 通过仅加载必要的数据库 schema 信息,降低 schema 重新加载开销和 DDL 阻塞时间,从而缓解 BR 备份与恢复对在线 DDL 的影响 #64833 @YuJuncen
- 通过将 PITR 恢复产生的 write CF 条目标记为物理导入事务,提升 PITR 与 TiCDC 的兼容性,使 TiCDC 可以忽略 PITR 导入的数据 #68660 @YuJuncen
- 新增
--region-scan-concurrency参数,用于限制 BR 同时向 PD 发送的 Region 扫描请求数量,在需要发起大量 Region 扫描时提升恢复稳定性 #66821 @Leavrth
TiCDC
- 优化 TiCDC event store 的写入路径和 iterator 路径,以减少内存分配并提升事件处理性能 #4928 @lidezhu
- 移除 TiCDC 对
tidb_ddl_history的依赖,转而依赖tidb_ddl_job来捕获 DDL,以支持加速表创建 #2272 @wlwilliamx - 优化 TiCDC 热路径,以降低 CPU 开销并提升高吞吐场景下的同步性能 #5107 @lidezhu
- 新增 redo checkpoint 和 resolved timestamp 指标,以提升 TiCDC redo log 进度的可观测性 #5264 @wk989898
- 通过避免持久化未变化的运行时状态,缓解大量 TiCDC changefeed 进入 warning 状态时的 etcd 压力 #5268 @wk989898
- 增强 TiCDC 监控,在 Changefeed Error Details Grafana 面板中展示错误发生时间,帮助运维人员更高效地诊断 changefeed 故障 #5085 @wlwilliamx
- 通过将每次 checker 运行中每个 group 的 split table merge 调度限制为最多 8 个 merge operator,缓解 TiCDC 增量扫描的 CPU 峰值 #5047 @hongyunyan
- 通过在 DML 事件进入写入流水线时即进行确认,而不是等待 flush 完成,提升 TiCDC cloud storage sink 的调度响应性和回调正确性,在保持 checkpoint 语义不变的前提下降低唤醒延迟 #4269 @3AceShowHand
- 减少 changefeed 之间的 TiCDC bootstrap 队首阻塞,在 sink 初始化较慢时提升 changefeed 创建和恢复吞吐量 #5139 @hongyunyan
- 通过默认重试临时性的 producer send failure,提升 TiCDC Kafka sink 的稳定性 #1920 @3AceShowHand
- 新增 Kafka sink URI 参数
max-retry,并默认对临时性的 Kafka producer send failure 启用有界重试,以提升 TiCDC Kafka sink 的稳定性 #12655 @3AceShowHand - 为 TiCDC cloud storage sink 新增本地 spool,用于在刷新到外部存储前先将已接收的编码 DML 暂存在本地,从而在对象存储较慢时降低内存压力并提升稳定性 #3745 @3AceShowHand
- 支持 TiCDC 同步部分索引相关的 DDL 语句 #3698 @YangKeao
- 为 TiCDC blackhole sink 新增指标,以提升 changefeed 同步和 DDL 处理的可观测性 #5362 @wk989898
- 优化 TiCDC log puller 性能,在处理 resolved-ts 密集型工作负载时,尤其是小批量场景下,降低 CPU 使用和内存分配 #4697 @asddongmen
- 优化 TiCDC MySQL sink 的冲突检测,以提升同步性能 #4582 @wk989898
- 提升 TiCDC resolve lock 的可观测性,并避免对同一 Region 重复执行 resolve 尝试,以减少不必要的锁解析工作,并通过新增指标和 dashboard 让问题排查更容易 #5016 @lidezhu
- 在 TiCDC Grafana dashboard 中新增 Changefeed Operation History 面板,帮助排查最近由用户触发的 changefeed 操作,例如 create、update、pause、resume 和 delete #5087 @wlwilliamx
- 支持解析和同步使用部分索引的 DDL 语句,包括带有
WHERE子句的CREATE TABLE、CREATE INDEX和ALTER TABLE ... ADD INDEX#12503 @YangKeao - 支持 MySQL sink 的表路由,使经过路由的 changefeed 能将 DDL 和 DML 应用到目标 schema 和表名上 #4818 @3AceShowHand
- 新增 TiCDC 指标,用于展示 warning 或 failed 状态 changefeed 的错误信息,使运维人员无需查看日志即可通过监控更方便地诊断问题 #4498 @wk989898
TiDB Lightning
错误修复
TiDB
- 修复当查询仍在运行时,TiDB 未能及时关闭已断开客户端连接,导致该连接在语句执行完成前仍保留在
SHOW PROCESSLIST中的问题 #57531 @Defined2014 - 修复在出现
RegionNotFound错误后,过期的 Region cache 条目仍可能继续被使用,导致重复重试、Region 重载延迟以及额外跨可用区流量的问题 #1892 #69197 @ekexium - 修复在使用常量字符串参数评估向量化
ILIKE时可能发生崩溃的问题 #67001 @zanmato1984 - 修复点更新
UPDATE语句在对无符号数值列赋负值,或向SET列赋整数值时,可能使用与普通UPDATE不一致的赋值转换语义,导致结果不一致、越界错误或与 MySQL 兼容性不一致的问题 #63455 #67534 @fzzf678 - 修复 TiDB 在极少数并发查询执行场景下可能因
SIGSEGV崩溃的问题 #66391 @bb7133 - 修复在使用大小写不同的用户变量时,查询可能生成次优执行计划并无法使用索引范围扫描的问题 #66339 @qw4990
- 修复多个会话并发命中全局绑定并破坏全局绑定缓存时,TiDB 可能发生内存耗尽的问题 #68015 @qw4990
- 修复 TiDB 优化器在处理带有外连接且包含对
NULL敏感的条件的查询时,可能因错误判断外连接能否简化为内连接而导致查询结果不正确的问题。受影响的查询场景包括:WHERE子句中包含OR、IS NULL、COALESCE()、NULLIF()、CAST()、IN (NULL, ...)等谓词或表达式,以及包含派生表或UNION ALL的外连接查询。该问题可能导致查询返回错误结果、漏行、空结果,或返回带有NULL值的非预期行。#58793 #59162 #60080 #60081 #60370 #61327 #66824 #66825 #67330 #67373 @winoros - 修复当 null-reject 检查与参数值无关时,外连接上的预处理语句可能跳过 prepared plan cache 的问题 #67048 @winoros
- 修复在为全范围索引扫描执行查询规划时,TiDB 可能记录不必要的异步索引直方图加载告警的问题 #64791 @terry1purcell
- 修复同步统计信息加载超时并回退到 pseudo 或 partial statistics 时生成的执行计划,可能在所需统计信息加载完成后仍被缓存和复用的问题 #66585 @winoros
- 修复 TiDB 在外连接场景下可能生成错误 join order 并返回错误查询结果的问题 #63887 @guo-shaoge
- 修复 TiDB 在某些包含外连接的查询中可能选择次优 join order,从而导致执行计划效率较低的问题 #67774 @AilinKid
- 修复升级期间当
mysql.global_variables中缺少对应行时,tidb_ignore_inlist_plan_digest可能被意外重置的问题 #68136 @qw4990 - 修复在优化带
ORDER BY和LIMIT的查询时,TiDB 可能因低估IndexFullScan代价而选择低效的MergeJoin计划,从而导致查询性能较差的问题 #67595 @qw4990 - 修复使用包含重复表达式的 expression index 的查询,可能因 TiDB 解析错误的隐藏生成列而返回
Unexpected missing column错误的问题 #67552 @AilinKid - 修复
ANALYZE在执行KILL QUERY或取消后可能无法及时停止,导致 analyze 任务卡住的问题 #65818 @hawkingrei - 修复将集群从早于 v7.6 的版本升级后,手动
ANALYZE可能变慢的问题,其原因是tidb_analyze_distsql_scan_concurrency未根据现有tidb_distsql_scan_concurrency设置完成初始化 #65423 @winoros - 修复 TiDB 无法将某些非关联
IN子查询转换为关联执行计划,导致无法使用索引查找并生成较低效查询计划的问题 #66320 @terry1purcell - 修复在带索引的字符串列上使用
CAST(... AS BINARY)时,查询可能执行索引全扫描而非索引范围扫描的问题 #67899 @terry1purcell - 修复对依赖
JSON等被跳过列类型的已索引存储生成列执行ANALYZE TABLE时可能发生 panic 的问题 #66359 #66918 @xhebox - 修复带外连接的查询中,TiDB 可能生成错误 join order,从而导致错误查询结果的问题 #67290 @guo-shaoge
- 修复当会话
time_zone领先于 UTC 时,SHOW ANALYZE STATUS可能显示负值Remaining_seconds的问题 #67230 @0xPoe - 修复在分区表上执行
ANALYZE(包括 auto-analyze)期间可能导致 TiDB server 崩溃,并报告fatal error: concurrent map read and map write的问题 #68457 @mjonss - 修复部分索引可能被错误用于执行外键约束检查,导致删除或更新父表行时遗漏匹配的子表行并留下孤儿行的问题 #68587 @YangKeao
- 修复不包含生成列的表上的
INSERT语句出现性能回退,导致常见工作负载吞吐下降的问题 #68129 @bb7133 - 修复
CONCAT_WS()将utf8mb4_0900_bin列与BLOB列组合时,返回ERROR 3854错误而非二进制结果的问题 #68845 @tiancaiamao - 修复由于连接监控开销,autocommit
INSERT、UPDATE和DELETE语句出现性能回退的问题 #68633 @King-Dylan - 修复在
new_collation_enabled被禁用时,对大小写混合的 schema 名执行GRANT和REVOKE可能失败、创建重复权限行,或无法命中已有权限行的问题;修复后,此类大小写混合标识符会映射到同一条权限记录 #66867 #68406 @expxiaoli - 修复客户端断开后,autocommit 写语句可能无法被及时中断的问题 #68236 @King-Dylan
- 修复与非 TiDB 事务相关的请求可能错误通过未来时间戳校验,并在
ScanLock、backup range、CheckTxnStatus、Cleanup和CheckSecondaryLocks中导致行为不一致的问题 #19656 @ekexium - 修复在启用
tidb_foreign_key_check_in_shared_lock时,悲观事务中的外键级联更新可能因use Op::SharedLock to prewrite on a shared lock而失败的问题 #68133 @wfxr
- 修复当查询仍在运行时,TiDB 未能及时关闭已断开客户端连接,导致该连接在语句执行完成前仍保留在
TiKV
- 修复当 Region 数量较大时,resolved_ts 模块消耗过多内存的问题 #19535 @glorv
- 修复在启用 MVCC read-aware compaction 时,TiKV 可能在一个长时间 compaction 轮次结束后立即开始下一轮 compaction,导致基于负载的 compaction 缺乏足够统计信息的问题 #19362 @mittalrishabh
- 修复在使用 raft-engine 时,TiKV 在稳定工作负载下内存占用会随时间持续增长的问题 #19544 @LykxSassinator
- 修复手动从 TiKV In-Memory Engine 驱逐 Region 后,这些 Region 会卡在
Evicting状态并无法被自动重新加载的问题 #19584 @overvenus - 修复当一个 store 使用多个 gRPC raft 连接时,TiKV 在 raft message 队列中消耗过多内存的问题 #19542 @glorv
- 修复在 TiKV 中止 CPU profiling 请求后,profiling 仍卡在 active 状态,导致后续 profiling 请求返回
Already in CPU Profiling错误的问题 #19703 @hujiatao0 - 修复在日志条目已持久化后,TiKV 仍可能在 Raft log 中保留过多内存,导致副本内存占用异常偏高的问题 #19593 @LykxSassinator
- 修复当从 PD 解析已移除 tombstone store 的地址时,TiKV 可能陷入无限重试循环并反复记录
invalid store ID ..., not found错误的问题 #17875 @LykxSassinator - 修复当访问令牌在长时间上传期间接近过期时,TiKV GCS 备份可能失败的问题 #19659 @RidRisR
- 修复 TiKV
apply_msg_len指标在正常流量下无数据点,影响 apply message 长度分布监控的问题 #18800 @squalfof - 修复当 PD 在 split 后立即 merge Region 时,TiKV 可能因在 Region heartbeat 中上报错误的 pending peer 信息而发生 panic 的问题 #17992 @hbisheng
- 修复无法访问 TiKV In-Memory Engine 调试 API
/debug/ime/cached_regions的问题 #19546 @glorv - 修复 TiKV 中的
server.grpc_memory_pool_quota配置无法动态修改的问题 #19104 @glorv - 修复当在线流量占用大部分 CPU 资源时,TiKV 不会限制后台流量,导致高负载场景下在线请求延迟升高的问题 #19401 @mittalrishabh
PD
- 修复在高并发场景下,由于 token bucket 累积了过多令牌,PD 资源管控限速可能被削弱的问题 #10744 @YuhaoZhang00
- 修复在重置 token bucket notification timer 时,resource group client controller 中发生 goroutine 泄漏的问题 #9745 @lhy1024
- 修复当配置的 RU 填充速率远高于实际 RU 消耗时,发往 resource group 的 SQL 请求可能出现约 1 秒延迟尖峰的问题 #10251 @JmPotato
- 修复当 placement rules 要求的最高隔离级别未满足时,PD affinity scheduling 仍可能将 Region 误判为已正确同步,导致错误副本放置决策的问题 #10149 @HunDunDM
- 修复当 region heartbeat breakdown 指标遇到主机 monotonic clock 短暂回退时,PD 可能因
counter cannot decrease in value错误而 panic 的问题 #10901 @JmPotato - 修复当未配置 affinity groups 时,PD 错误上报 affinity checker operator limit 指标的问题 #10687 @lhy1024
- 修复除非显式设置
PD-Allow-Follower-Handle: true请求头,否则 PD follower 无法从本地已同步 Region cache 提供只读 region HTTP API 的问题 #10681 @okJiang - 修复当 PD leader 未发送 region sync 响应或在关闭期间关闭 sync stream 时,PD follower 可能停止接收 region 更新的问题 #10684 @okJiang
- 修复 region syncer 的一个问题:当 PD leader 未发送更新并从内存中移除该 stream 后,PD follower 可能仍在等待一个过期的 stream #10666 @okJiang
- 修复在仅 flow 更新的 region heartbeat 后,PD 可能持续调度冗余 subtree update 任务,从而增加大型集群内存压力的问题 #10722 @JmPotato
Tools
Backup & Restore (BR)
- 修复即使指定了
--check-requirements=false,BR restore 仍会因版本兼容性检查失败而无法继续执行的问题 #67402 @RidRisR - 修复当 lock file 位于存储根目录时,BR
log truncate在兼容 S3 的存储中可能失败的问题 #65897 @YuJuncen - 修复当备份中包含多个版本的大量
mDB:*元键时,BR PITR 在恢复元数据期间可能耗尽内存的问题 #67196 @vldmit - 修复在启用 AWS FIPS endpoint 模式时,BR 可能无法访问自定义 AWS S3 endpoint 的问题 #68966 @v01dstar
- 修复当目标集群与备份集群的列数不一致时,BR 在 snapshot restore 期间仍会物理恢复
mysql.user表,从而覆盖较新表结构而不是回退到逻辑恢复的问题 #68861 @Leavrth - 修复
br operator base64ify在生成的存储后端中无法保留 S3 Object Lock 状态的问题 #68551 @YuJuncen - 修复当 TiKV 未响应 flush subscription 请求时,BR log backup checkpoint 推进可能卡住的问题 #68411 @Leavrth
- 修复在使用表过滤器执行 BR PITR 时,同一数据库中的表被多次恢复可能创建重复数据库或意外修改目标数据库的问题 #68908 @Leavrth
- 修复 BR log backup 的当前最后一个 region ID 和 leader store ID 指标缺失于
/metrics端点的问题 #62839 @YuJuncen - 修复在高写入压力下,BR 向 S3 执行日志备份时,可能因 multipart upload 超过 10000 分片限制而卡住的问题 #19162 @vldmit
- 修复当使用较旧 restore 工具恢复由较新 BR 版本创建的备份时,BR 可能静默丢失无法识别的备份元数据(如
merge_option属性)的问题;现在会在 requirement checks 阶段报告该兼容性问题 #67016 @JoyC-dev - 修复在 truncate 或 migration loading 失败时,BR log backup 可能泄漏外部备份目录或残留过期读锁的问题 #67819 @RidRisR
- 修复当凭证仅对配置的 prefix 范围有效时,BR 对 S3 权限的检查可能失败,导致备份或恢复任务在开始前就失败的问题 #68583 @YuJuncen
- 修复在启用日志备份且恢复失败后,从 checkpoint 恢复 restore 时,BR 可能不会写入 PiTR blocklist 的问题 #68171 @Leavrth
- 修复当初始化的 Region 数量超过 32768 个时,BR 日志备份任务启动可能卡住的问题 #19615 @YuJuncen
- 修复在逻辑恢复系统表时,BR 可能因
Transaction is too large错误而失败的问题,并新增--txn-total-size-limit参数用于调整事务内存配额 #66806 @Leavrth
- 修复即使指定了
TiCDC
- 修复 TiCDC Grafana dashboard 中面板重叠和分区顺序错误的问题 #4508 @lidezhu
- 修复当事件迭代器创建失败或首次读取失败时,TiCDC 不会上报实际错误,从而掩盖事件扫描失败根因的问题 #5005 @lidezhu
- 修复当发送 DDL 事件或 checkpoint 失败并触发重试时,TiCDC Kafka changefeed 可能泄漏 Kafka client 实例并导致内存持续增长的问题 #12666 @3AceShowHand
- 修复当增量扫描包含缺失旧值的 insert-like prewrite lock 时,TiCDC 可能消耗过多 CPU 且 checkpoint 推进缓慢的问题 #19565 @zier-one
- 修复在 dispatcher reset 之后,TiCDC 可能扫描到 checkpoint 以下数据,并可能导致 event store panic 的问题 #4492 @lidezhu
- 修复在组件初始化失败时,TiCDC 可能泄漏连接、存储句柄或后台 goroutine 的问题 #4516 @wk989898
- 修复当可用内存配额为 0 时,TiCDC changefeed 可能因事件处理流水线死锁而停滞的问题 #4899 @lidezhu
- 修复当较晚的 changefeed remove 请求到达时,如果较早的 close 请求仍在处理中,TiCDC 可能跳过下游 remove-only 清理的问题 #4825 @hongyunyan
- 修复当下游返回非标准 missing-table 错误码且
tidb_cdc.ddl_ts_v1缺失时,TiCDC MySQL-compatible sink 可能卡住的问题 #5003 @hongyunyan - 修复当 Kafka sink 初始化失败或 sink 被关闭时,TiCDC 可能泄漏 Kafka client 连接和后台资源的问题 #12572 @wlwilliamx
- 修复在同步大量活跃表时,TiCDC resolved-ts 延迟和 CPU 使用率可能周期性升高的问题 #4887 @lidezhu
- 修复当本地 EventService 移除 dispatcher 后 collector 又在本地重新注册该 dispatcher 时,TiCDC 同步可能停滞的问题 #5088 @lidezhu
- 修复在初始化 TiCDC Pulsar sink 且 producer 初始化失败时可能发生 panic 的问题 #4937 @wk989898
- 修复路径被移除后,TiCDC 仍可能保留不准确的内存计数,从而导致 dynstream 中出现错误 pause 或 release 反馈的问题 #4644 @asddongmen
- 修复 TiCDC 在优雅处理
SIGTERM关闭时以 code 1 退出的问题 #4563 @pingyu - 修复由于 redo 配置未正确初始化,TiCDC 可能无法启动 redo log sink 的问题 #4512 @3AceShowHand
- 修复 TiCDC 在应用包含
CURRENT_TIMESTAMP等时间相关默认值列的 redo DDL 事件时可能发生 panic 的问题 #4699 @wk989898 - 修复当多个 TiCDC 集群共享同一 PD/etcd 且 cluster ID 存在前缀关系时,TiCDC 在重启后可能加载其他集群 changefeed 的问题 #4756 @wk989898
- 修复 TiCDC 在 bootstrap 和 failover 期间 redo readiness 中的数据竞争问题,该问题可能导致 failover 任务上报
DATA RACE告警 #4402 @3AceShowHand - 修复当未显式指定源数据库名时,TiCDC 无法同步跨库
RENAME TABLE操作的问题 #4424 @lidezhu - 修复当 log puller 遇到临时性 gRPC
EOF错误时,TiCDC changefeed 可能失败或卡住的问题 #4880 @lidezhu - 修复当同步超大数量表时,TiCDC changefeed 初始化缓慢且 maintainer 延迟过高的问题 #4951 @hongyunyan
- 修复查询不存在 changefeed 时,TiCDC CLI 不返回错误的问题 #4648 @wk989898
- 修复调用 TiCDC
unsafe/service_gc_safepointAPI 时意外关闭 PD client 的问题 #4638 @wk989898 - 修复在 bootstrap 失败后,TiCDC 重试 maintainer bootstrap 时可能发生 panic 的问题,现在 changefeed 会上报原始错误而不是直接崩溃 #4509 @wk989898
- 修复在 stale lock 解析期间,TiCDC 可能留下未解析的 shared lock,从而影响 nextgen 部署中 shared-lock 的兼容性问题 #5206 @wfxr
- 修复 dispatcher 被移除后,TiCDC 仍可能意外重新调度该 dispatcher 的问题 #4874 @wlwilliamx
- 修复在重启后,如果重新创建的 dispatcher 从过期 checkpoint 启动,TiCDC 可能留下数据同步缺口的问题 #3846 @hongyunyan
- 修复处理 coordinator 消息时,TiCDC 可能卡住并失去响应的问题 #4440 @wk989898
- 修复 create、pause 和 remove changefeed 操作在请求上下文被取消后,仍可能长时间挂起或卡住的问题 #4417 @wk989898
- 修复在 log pulling 期间处理 fast region error 或 replication worker shutdown 时可能发生 panic 的问题 #4472 @lidezhu
- 修复在启用 syncpoint 且频繁执行 DDL 的工作负载中,TiCDC 处理重复 block status 请求可能耗时过长,导致 maintainer slow log 和 barrier 处理延迟的问题 #4957 @hongyunyan
- 修复在 etcd 集群成员变更后,TiCDC
cli changefeed list可能展示来自不同集群 changefeed 的问题 #5137 @wk989898 - 修复在关闭过程中仍有任务被提交或重新调度时,TiCDC thread pool 关闭可能卡住的问题 #4640 @wk989898
- 修复在某些 DDL(如
CREATE TABLE ... LIKE ...)场景下,当 dispatcher 的WAITING状态被 maintainer 暂时忽略时,TiCDC 需要等待约 5 秒才推进 barrier 的问题 #4810 @zier-one - 修复在暂停并恢复大量 changefeed 后,TiCDC changefeed 延迟增加且 CPU 使用率升高的问题 #4653 @lidezhu
- 修复当未显式指定源表 schema 时,TiCDC 无法同步跨库
CREATE TABLE ... LIKE语句的问题 #5025 @lidezhu - 修复当视图定义中使用未限定的源表名时,TiCDC 同步跨 schema
CREATE VIEW语句可能出错,导致下游同步失败或视图引用错误表的问题 #5026 @lidezhu - 修复在 PD 节点扩缩容后,TiCDC 使用错误 etcd endpoint,导致已移除 PD 成员被重复加回的问题 #12368 @wk989898
- 修复当提交无效 global checkpoint 时,TiCDC redo dispatcher 可能卡在
Initializing状态,导致 redo 元数据停止推进的问题 #4703 @hongyunyan - 修复处理超大数量表时,TiCDC changefeed 初始化缓慢的问题 #5014 @lidezhu
- 修复在最后一个 changefeed 被移除后,TiCDC 仍可能在 PD 中残留过期集群级 service GC safepoint,从而阻塞上游 GC 推进的问题 #4610 @hongyunyan
- 修复当
MultipleTableInfos非空时,TiCDC 可能无法正确解码或错误处理多表 DDL 事件的问题 #4415 @asddongmen - 修复 TiCDC 在同步
EXCHANGE PARTITIONDDL 语句时,会破坏包含转义反引号的分区名的问题 #4450 @lidezhu - 修复在并发更新 subscription checkpoint 时,TiCDC 可能在 event store 中生成乱序 checkpoint 更新,导致同步进度跟踪不一致的问题 #4992 @lidezhu
- 修复当 EventCollector 在关闭期间仍接收消息时,TiCDC 可能发生死锁并阻塞清理的问题 #4434 @wk989898
- 修复在同步匿名
ADD INDEXDDL 语句时,TiCDC 可能在下游生成不一致索引名的问题,尤其是在重试或同步CREATE TABLE LIKE场景下 #2327 @wk989898 - 修复当连接 watchdog 中止后,TiCDC 可能保留过期 CDC 连接,导致连接清理延迟,并在 sink 内存耗尽时使 changefeed 同步卡住的问题 #19610 @wk989898
- 修复 TiCDC 中重新注册的 capture 在重新上线后,仍可能因过期的延迟删除 tombstone 再次被移除的问题 #4695 @hongyunyan
Dumpling