TiDB 8.2.0 Release Notes

发版日期:2024 年 7 月 11 日

TiDB 版本:8.2.0

试用链接:快速体验 | 下载离线包

在 8.2.0 版本中,你可以获得以下关键特性:

分类功能/增强描述
稳定性与高可用TiProxy 支持多种负载均衡策略在 TiDB v8.2.0 中,TiProxy 支持从多个维度(包括状态、连接数、健康度、内存、CPU 和地理位置)对 TiDB 节点进行评估和排序,并支持通过 policy 配置项配置这些负载均衡策略的优先级。TiProxy 将根据 policy 动态选择最优 TiDB 节点执行数据库操作,从而优化 TiDB 节点的整体资源使用率,提升集群性能和吞吐。
并行 HashAgg 算法支持数据落盘成为正式功能 (GA)HashAgg 是 TiDB 中常用的聚合算子,用于快速聚合具有相同字段值的行。TiDB v8.0.0 引入并行 HashAgg 作为实验特性,以进一步提升处理速度。当内存资源不足时,并行 HashAgg 可以将临时排序数据落盘,避免因内存使用过度而导致的 OOM 风险,从而提升查询性能和节点稳定性。该功能在 v8.2.0 成为正式功能,并默认开启,用户可以通过 tidb_executor_concurrency 安全地设置并行 HashAgg 的并发度。
统计信息加载效率提升 10 倍对于拥有大量表和分区的集群,比如 SaaS 或 PaaS 服务,统计信息加载效率的提升能够解决 TiDB 实例启动缓慢的问题,同时也能提升统计信息动态加载的成功率,从而减少由于统计信息加载失败造成的性能回退,提升集群的稳定性。
数据库管理与可观测性为切换资源组引入权限控制随着资源管控功能被广泛应用,对资源组切换操作的权限控制能够避免数据库用户对资源的滥用,强化管理员对整体资源使用的保护,从而提升集群的稳定性。

功能详情

性能

  • 支持下推以下 JSON 函数到 TiKV #50601 @dbsid

    • JSON_ARRAY_APPEND()
    • JSON_MERGE_PATCH()
    • JSON_REPLACE()

    更多信息,请参考用户文档

  • TiDB 支持并行排序 #49217 #50746 @xzhangxian1008

    在 v8.2.0 之前,TiDB 只能以非并行的方式执行排序计算,当需要对大量数据进行排序时,查询性能会受到影响。

    从 v8.2.0 开始,TiDB 支持并行排序功能,显著提升了排序计算的性能。该功能无需手动开启,TiDB 会根据系统变量 tidb_executor_concurrency 的值自动选择并行或非并行排序。

    更多信息,请参考用户文档

  • TiDB 的并行 HashAgg 算法支持数据落盘成为正式功能 (GA) #35637 @xzhangxian1008

    TiDB v8.0.0 以实验特性引入了并行 HashAgg 算法支持数据落盘功能。在 v8.2.0 中,该功能成为正式功能 (GA)。TiDB 在使用并行 HashAgg 算法时,将根据内存使用情况自动触发数据落盘,从而兼顾查询性能和数据处理量。该功能默认开启,控制该功能的变量 tidb_enable_parallel_hashagg_spill 将在未来版本中废弃。

    更多信息,请参考用户文档

稳定性

  • 统计信息加载效率提升 10 倍 #52831 @hawkingrei

    SaaS 或 PaaS 类业务应用中可能存在大量的数据表,这些表不但会拖慢初始统计信息的加载速度,也会增加高负载情况下同步负载的失败率。TiDB 的启动时间以及执行计划的准确性都会受到影响。在 v8.2.0 中,TiDB 从并发模型、内存分配方式等多个角度优化了统计信息的加载过程,降低延迟,提升吞吐,避免由于统计信息加载速度过慢,影响业务扩容。

    新增支持自适应的并行加载。默认情况下,配置项 stats-load-concurrency 的值为 0,统计信息加载的并行度会根据硬件规格自动选择。

    更多信息,请参考用户文档

高可用

  • TiProxy 支持多种负载均衡策略 #465 @djshow832 @xhebox

    TiProxy 是 TiDB 的官方代理组件,位于客户端和 TiDB server 之间,为 TiDB 集群提供负载均衡和连接保持功能。在 v8.2.0 之前,TiProxy 默认使用 v1.0.0 版本,仅支持基于 TiDB server 状态和连接数的负载均衡策略。

    从 v8.2.0 开始,TiProxy 默认使用 v1.1.0 版本,新增多种负载均衡策略,除了状态和连接数,还支持根据健康度、内存、CPU、地理位置对 TiDB 集群的连接进行动态负载均衡调度,提高整个 TiDB 集群的稳定性。

    你可以通过 TiProxy 配置项 policy 配置负载均衡策略的组合和优先级,具体策略包括:

    • resource:资源优先策略,优先级顺序依次为基于状态、健康度、内存、CPU、地理位置、连接数的负载均衡。
    • location:地理优先策略,优先级顺序依次为基于状态、地理位置、健康度、内存、CPU、连接数的负载均衡。
    • connection:最小连接数策略,优先级顺序依次为基于状态、连接数的负载均衡。

    更多信息,请参考用户文档

SQL 功能

  • TiDB 支持 JSON Schema Validation 函数 #52779 @dveeden

    在 v8.2.0 之前,你需要依赖外部工具或自定义验证逻辑进行 JSON 数据验证,开发和维护比较复杂,开发效率低。从 v8.2.0 版本开始,引入了 JSON_SCHEMA_VALID() 函数。通过在 CHECK 约束中使用 JSON_SCHEMA_VALID(),可以避免插入不符合要求的数据,而不是事后检查数据。你可以在 TiDB 中直接验证 JSON 数据的有效性,提高数据的完整性和一致性,提升了开发效率。

    更多信息,请参考用户文档

数据库管理

  • TiUP 支持部署 PD 微服务 #5766 @rleungx

    PD 从 v8.0.0 开始支持微服务模式。该模式通过将 PD 的时间戳分配和集群调度功能拆分为独立的服务进行部署和管理,可以更好地控制资源的使用和隔离,减少不同服务之间的相互影响。但是,在 v8.2.0 之前的版本中,PD 微服务仅支持通过 TiDB Operator 进行部署。

    从 v8.2.0 开始,PD 微服务支持通过 TiUP 进行部署。你可以在集群中单独部署 tso 微服务和 scheduling 微服务,从而实现 PD 的性能扩展,解决大规模集群下 PD 的性能瓶颈问题。当 PD 出现明显的性能瓶颈且无法升级配置的情况下,建议考虑使用该模式。

    更多信息,请参考用户文档

  • 为切换资源组的操作增加权限控制 #53440 @glorv

    TiDB 允许用户使用命令 SET RESOURCE GROUP 或 Hint RESOURCE_GROUP() 切换到其他资源组,这可能会造成部分数据库用户对资源组的滥用。TiDB v8.2.0 增加了对资源组切换行为的管控,只有被授予动态权限 RESOURCE_GROUP_ADMIN 或者 RESOURCE_GROUP_USER 的数据库用户,才能切换到其他资源组,以加强对系统资源的保护。

    为了维持兼容性,从旧版本升级到 v8.2.0 及之后版本的集群维持原行为不变。通过设置新增变量 tidb_resource_control_strict_modeON,来开启上述的增强权限控制。

    更多信息,请参考用户文档

可观测性

  • 记录执行计划没有被缓存的原因 #50618 @qw4990

    在一些场景下,用户希望多数执行计划能够被缓存,以节省执行开销,并降低延迟。目前执行计划缓存对 SQL 有一定限制,部分形态 SQL 的执行计划无法被缓存,但是用户很难识别出无法被缓存的 SQL 以及对应的原因。因此,从 v8.2.0 开始,为系统表 STATEMENTS_SUMMARY 增加了新的列 PLAN_CACHE_UNQUALIFIEDPLAN_CACHE_UNQUALIFIED_LAST_REASON,来解释计划无法被缓存的原因,协助用户进行性能调优。

    更多信息,请参考用户文档

安全

  • 增强 TiFlash 日志脱敏 #8977 @JaySon-Huang

    TiDB v8.0.0 增强了日志脱敏功能,支持控制是否使用标记符号 ‹ › 包裹 TiDB 日志中的用户数据。基于标记后的日志,你可以在展示日志时决定是否对被标记信息进行脱敏处理,从而提升日志脱敏功能的灵活性。在 v8.2.0 中,TiFlash 进行了类似的日志脱敏功能增强。要使用该功能,可以将 TiFlash 配置项 security.redact_info_log 的值设置为 marker

    更多信息,请参考用户文档

数据迁移

  • 对齐不同 changefeed 的 Syncpoint #11212 @hongyunyan

    在 v8.2.0 之前,对齐多个 changefeed 的 Syncpoint 很有挑战性。在创建 changefeed 时,必须谨慎选择 changefeed 的 startTs,以便与其他 changefeed 的 Syncpoint 对齐。从 v8.2.0 开始,为 changefeed 创建的 Syncpoint 是 changefeed 的 sync-point-interval 配置的倍数。这个调整可以让你对齐具有相同 sync-point-interval 配置的多个 changefeed 的 Syncpoint,简化和提高了对齐多个下游集群的能力。

    更多信息,请参考用户文档

  • TiCDC Pulsar Sink 新增支持 pulsar+httppulsar+https 连接协议 #11336 @SandeepPadhi

    在 v8.2.0 之前,TiCDC Pulsar Sink 仅支持使用 pulsarpulsar+ssl 协议进行连接。从 v8.2.0 开始,TiCDC Pulsar Sink 新增支持使用 pulsar+httppulsar+https 协议进行连接。这个调整可以让你更加灵活地配置 Pulsar Sink 的连接方式。

    更多信息,请参考用户文档

兼容性变更

行为变更

  • 使用 TiDB Lightning 导入 CSV 文件时,如果设置了严格格式 strict-format = true 将一个大 CSV 文件切分为多个小 CSV 文件来提升并发和导入性能,需要显式指定行结束符 terminator,参数的取值为 \r\n\r\n。如果没有指定行结束符,可能导致 CSV 文件数据解析异常。#37338 @lance6716

  • 使用 IMPORT INTO 导入 CSV 文件时,如果指定 SPLIT_FILE 参数将一个大 CSV 文件切分为多个小 CSV 文件来提升并发和导入性能,需显式指定行结束符 LINES_TERMINATED_BY,参数的取值为 \r\n\r\n。如果没有指定行结束符,可能导致 CSV 文件数据解析异常。#37338 @lance6716

  • 在 BR v8.2.0 之前的版本中,当集群存在 TiCDC 同步任务时,BR 不支持进行数据恢复。从 BR 8.2.0 起,BR 数据恢复对 TiCDC 的限制被放宽:如果所恢复数据的 BackupTS(即备份时间)早于 Changefeed 的 CheckpointTS(即记录当前同步进度的时间戳),BR 数据恢复可以正常进行。考虑到 BackupTS 的时间通常较早,此时可以认为绝大部分场景下,当集群存在 TiCDC 同步任务时,BR 都可以进行数据恢复。#53131 @YuJuncen

MySQL 兼容性

  • 在 v8.2.0 之前,执行带有 PASSWORD REQUIRE CURRENT DEFAULT 选项的 CREATE USER 语句会返回错误,因为 TiDB 不支持且无法解析该选项。从 v8.2.0 开始,TiDB 支持解析并忽略该选项,以便与 MySQL 兼容 #53305 @dveeden

系统变量

变量名修改类型描述
tidb_analyze_distsql_scan_concurrency修改最小值从 1 改为 0。当设置为 0 时,TiDB 会根据集群规模自适应调整执行 ANALYZEscan 操作的并发度。
tidb_analyze_skip_column_types修改从 v8.2.0 开始,默认设置下,TiDB 不会收集类型为 MEDIUMTEXTLONGTEXT 的列,避免潜在的 OOM 风险。
tidb_enable_historical_stats修改默认值从 ON 修改为 OFF,即默认关闭历史统计信息,避免潜在的稳定性问题。
tidb_executor_concurrency修改新增支持对 sort 算子的并发度进行设置。
tidb_sysproc_scan_concurrency修改最小值从 1 改为 0。当设置为 0 时,TiDB 会根据集群规模自适应调整执行内部 SQL 语句时 scan 操作的并发度。
tidb_resource_control_strict_mode新增SET RESOURCE GROUP 和优化器 RESOURCE_GROUP() Hint 权限控制的开关。

配置文件参数

配置文件配置项修改类型描述
TiDBstats-load-concurrency修改默认值从 5 修改为 0,最小值从 1 修改为 00 为自动模式,根据服务器情况,自动调节并发度。
TiDBtoken-limit修改最大值从 18446744073709551615(64 位平台)和 4294967295(32 位平台)修改为 1048576,代表同时执行请求的 session 个数最多可以设置为 1048576,避免设置过大导致 TiDB Server OOM。
TiKVmax-apply-unpersisted-log-limit修改默认值从 0 修改为 1024,代表允许 apply 已经 commit 但尚未持久化的 Raft 日志的最大数量为 1024,用于降低 TiKV 节点上因 I/O 抖动导致的长尾延迟。
TiKVserver.grpc-compression-type修改该配置项现在也会影响 TiKV 向 TiDB 发送的响应消息的压缩算法。开启压缩可能消耗更多 CPU 资源。
TiFlashsecurity.redact_info_log修改可选值新增 marker 选项。当配置项的值设置为 marker 时,日志中的用户数据会被标记符号 ‹ › 包裹。

系统表

编译器版本

  • 为了提升 TiFlash 的开发体验,编译和构建 TiDB 所需的 LLVM 的最低版本从 13.0 升级到了 17.0。如果你是 TiDB 开发者,为了保证顺利编译,请对应升级你的 LLVM 编译器版本。#7193 @Lloyd-Pottiger

废弃功能

  • 以下为从 v8.2.0 开始已废弃的功能:

    • 从 v8.2.0 开始,TiDB 的配置项 enable-replica-selector-v2 被废弃。向 TiKV 发送 RPC 请求时,默认使用新版本的 Region 副本选择器。
    • 从 v8.2.0 开始,BR 快照恢复参数 --concurrency 被废弃。作为替代,你可以通过 --tikv-max-restore-concurrency 配置快照恢复阶段单个 TiKV 节点的任务最大并发数。
    • 从 v8.2.0 开始,BR 快照恢复参数 --granularity 被废弃,粗粒度打散 Region 算法默认启用。
  • 以下为计划将在未来版本中废弃的功能:

  • 以下为计划将在未来版本中移除的功能:

    • 从 v8.0.0 开始,TiDB Lightning 废弃了物理导入模式下的旧版冲突检测策略,支持通过 conflict.strategy 参数统一控制逻辑导入和物理导入模式的冲突检测策略。旧版冲突检测的参数 duplicate-resolution 将在未来版本中被移除。

改进提升

  • TiDB

    • 支持并行执行逻辑 DDL 语句 (General DDL)。相比 v8.1.0,在使用 10 个会话并发提交不同 DDL 语句的场景下,性能提升了 3 到 6 倍 #53246 @D3Hunter
    • 改进形如 ((a = 1 and b = 2 and c > 3) or (a = 4 and b = 5 and c > 6)) and d > 3 的表达式匹配多列索引的逻辑,使其能生成更加精准的 Range #41598 @ghazalfamilyusa
    • 优化对大数据量的表进行简单查询时获取数据分布信息的性能 #53850 @you06
    • 聚合的结果集能够作为 IndexJoin 的内表,使更多的复杂查询可以匹配到 IndexJoin,从而可以通过索引提升查询效率 #37068 @elsa0520
    • 通过批量删除 TiFlash placement rule 的方式,提升对分区表执行 TRUNCATEDROP 后数据 GC 的处理速度 #54068 @Lloyd-Pottiger
    • 升级 Azure Identity Libraries 和 Microsoft Authentication Library 的版本,增强安全性 #53990 @hawkingrei
    • token-limit 的最大值设置为 1048576,避免设置过大导致 TiDB Server OOM #53312 @djshow832
    • 改进对于 MPP 执行计划的列裁剪功能,以提升 TiFlash MPP 的执行性能 #52133 @yibin87
    • 优化 IndexLookUp 算子在回表数据量较多(大于 1024 行)时的性能开销 #53871 @crazycs520
    • 在 MPP 负载均衡时移除不包含任何 Region 的 Store #52313 @xzhangxian1008
  • TiKV

    • 增加 Compaction Job Size(files) 指标来呈现单个 compaction job 涉及的 SST 文件数 #16837 @zhangjinpeng87
    • 默认开启提前 apply 特性,开启后,Raft leader 在多数 peer 完成 Raft log 持久化之后即可进行 apply,不再要求 leader 自身完成 Raft log 的持久化,降低少数 TiKV 抖动对写请求延迟的影响 #16717 @glorv
    • 增加 Raft dropped messages 事件的可观测性,以便定位写入慢的根本原因 #17093 @Connor1996
    • 增加对 ingest file 的延迟可观测性,以便排查集群的延迟问题 #17078 @LykxSassinator
    • 利用单独的线程来进行副本清理工作,保证 Raft 读写关键路径的延迟稳定 #16001 @hbisheng
    • 提升正在进行 apply 的 Raft 快照数量的可观测性 #17078 @hbisheng
  • PD

  • TiFlash

    • 减少数据高并发读取下的锁冲突,优化短查询性能 #9125 @JinheLin
    • 消除 Join 算子中对于 Join Key 的冗余拷贝 #9057 @gengliqi
    • HashAgg 算子中转换两级哈希表的过程并行化 #8956 @gengliqi
    • 移除 HashAgg 算子的冗余的聚合函数以减少计算开销 #8891 @guo-shaoge
  • Tools

    • Backup & Restore (BR)

      • 优化备份功能,提升在大量表备份过程中遇到节点重启、扩容或网络抖动时的备份性能和稳定性 #52534 @3pointer
      • 优化恢复过程中对 TiCDC Changefeed 的细粒度检查,如果 Changefeed 的 CheckpointTS 晚于数据的备份时间,则不会影响恢复操作,从而减少不必要的等待时间,提升用户体验 #53131 @YuJuncen
      • BACKUP 语句和 RESTORE 语句添加了多个常用参数选项,例如 CHECKSUM_CONCURRENCY #53040 @RidRisR
      • 去掉除了 br log restore 子命令之外其它 br log 子命令对 TiDB domain 数据结构的载入,降低内存消耗 #52088 @Leavrth
      • 支持对日志备份过程中生成的临时文件进行加密 #15083 @YuJuncen
      • 在 Grafana 面板中新增 tikv_log_backup_pending_initial_scan 监控指标 #16656 @3pointer
      • 优化 PITR 日志的输出格式,并在日志中新增 RestoreTS 字段 #53645 @dveeden
    • TiCDC

      • 支持当下游为消息队列 (Message Queue, MQ) 或存储服务时直接输出原始事件 #11211 @CharlesCheung96

错误修复

  • TiDB

    • 修复当 SQL 语句包含 Outer Join,且 Join 条件包含 false IN (column_name) 表达式时,查询结果缺少部分数据的问题 #49476 @ghazalfamilyusa
    • 在收集表中 PREDICATE COLUMNS 的统计信息时,不再收集系统表中列的统计信息 #53403 @hi-rustin
    • 修复系统变量 tidb_persist_analyze_optionsOFF 时,系统变量 tidb_enable_column_tracking 未生效的问题 #53478 @hi-rustin
    • 修复在 (*PointGetPlan).StatsInfo() 执行过程中可能遇到数据竞争的问题 #49803 #43339 @qw4990
    • 修复在包含数据修改操作的事务中查询带有虚拟列的表时,查询结果可能错误的问题 #53951 @qw4990
    • 修复在自动收集统计信息时,系统变量 tidb_enable_async_merge_global_statstidb_analyze_partition_concurrency 未生效的问题 #53972 @hi-rustin
    • 修复查询 TABLESAMPLE 时可能遇到 plan not supported 报错的问题 #54015 @tangenta
    • 修复执行 SELECT DISTINCT CAST(col AS DECIMAL), CAST(col AS SIGNED) FROM ... 查询时结果出错的问题 #53726 @hawkingrei
    • 修复在客户端读取数据超时后查询无法被终止的问题 #44009 @wshwsh12
    • 修复 Longlong 类型在谓词中溢出的问题 #45783 @hawkingrei
    • 修复窗口函数中有某些子查询时可能会 panic 的问题 #42734 @hi-rustin
    • 修复 TopN 算子可能被错误地下推的问题 #37986 @qw4990
    • 修复在聚簇索引作为谓词时 SELECT INTO OUTFILE 不生效的问题 #42093 @qw4990
    • 修复 information schema 缓存未命中导致 stale read 查询延迟上升的问题 #53428 @crazycs520
    • 修复 YEAR 类型的列与超出范围的无符号整数进行比较导致错误结果的问题 #50235 @qw4990
    • 修复重启 TiDB 后,主键列统计信息中的直方图和 TopN 未被加载的问题 #37548 @hawkingrei
    • 修复 Massively Parallel Processing (MPP) 中 final AggMode 和 non-final AggMode 无法共存的问题 #51362 @AilinKid
    • 修复执行谓词总是为 trueSHOW ERRORS 语句导致 TiDB panic 的问题 #46962 @elsa0520
    • 修复在递归 CTE 中无法使用视图的问题 #49721 @hawkingrei
    • 修复 TiDB 启动加载统计信息时可能因为 GC 推进报错的问题 #53592 @you06
    • 修复使用 PREPARE/EXECUTE 方式执行带 CONV 表达式的语句,且 CONV 表达式包含 ? 参数时,多次执行可能导致查询结果错误的问题 #53505 @qw4990
    • 修复将数据从 FLOAT 类型转换为 UNSIGNED 类型时结果错误的问题 #41736 @guo-shaoge
    • 修复创建带有外键的表时,TiDB 未创建对应的统计信息元信息 (stats_meta) 的问题 #53652 @hawkingrei
    • 修复查询中的某些过滤条件可能导致 planner 模块发生 invalid memory address or nil pointer dereference 报错的问题 #53582 #53580 #53594 #53603 @YangKeao
    • 修复并发执行 CREATE OR REPLACE VIEW 可能报错 table doesn't exist 的问题 #53673 @tangenta
    • 修复 INFORMATION_SCHEMA.TIDB_TRX 表中 STATE 字段的 size 未定义导致 STATE 显示为空的问题 #53026 @cfzjywxk
    • 修复关闭 tidb_enable_async_merge_global_stats 时,GlobalStats 中的 Distinct_count 信息可能错误的问题 #53752 @hawkingrei
    • 修复使用 Optimizer Hints 时,可能输出错误的 WARNINGS 信息的问题 #53767 @hawkingrei
    • 修复对时间类型执行取负操作结果不正确的问题 #52262 @solotzg
    • 修复 REGEXP() 函数对空模式参数未显式报错的问题 #53221 @yibin87
    • 修复将 JSON 转换为时间格式在某些情况下可能会丢失精度的问题 #53352 @YangKeao
    • 修复 JSON_QUOTE() 函数在某些情况下返回结果不正确的问题 #37294 @dveeden
    • 修复执行 ALTER TABLE ... REMOVE PARTITIONING 后可能导致数据丢失的问题 #53385 @mjonss
    • 修复使用 auth_socket 认证插件时,TiDB 在某些情况下未能拒绝不符合身份认证的用户连接的问题 #54031 @lcwangchao
    • 修复 JSON 相关函数在某些情况下报错信息与 MySQL 不一致的问题 #53799 @dveeden
    • 修复分区表在 INFORMATION_SCHEMA.PARTITIONS 中的 INDEX_LENGTH 列显示不正确的问题 #54173 @Defined2014
    • 修复 INFOMATION_SCHEMA.TABLESTIDB_ROW_ID_SHARDING_INFO 列显示不正确的问题 #52330 @tangenta
    • 修复生成列返回非法时间戳的问题 #52509 @lcwangchao
    • 修复通过分布式执行框架添加索引时,设置 max-index-length 导致 TiDB panic 的问题 #53281 @zimulala
    • 修复某些情况下可以创建非法的 DECIMAL(0,0) 列类型的问题 #53779 @tangenta
    • 修复使用 CURRENT_DATE() 作为列默认值时查询结果错误的问题 #53746 @tangenta
    • 修复 ALTER DATABASE ... SET TIFLASH REPLICA 语句错误地给 SEQUENCE 表添加 TiFlash 副本的问题 #51990 @jiyfhust
    • 修复 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表中 REFERENCED_TABLE_SCHEMA 字段显示不正确的问题 #52350 @wd0517
    • 修复 AUTO_ID_CACHE=1 时,单条语句插入多行数据导致 AUTO_INCREMENT 列不连续的问题 #52465 @tiancaiamao
    • 修复弃用警告的格式问题 #52515 @dveeden
    • 修复 TRACE 命令在 copr.buildCopTasks 中丢失的问题 #53085 @time-and-fate
    • 修复 memory_quota Hint 在子查询中可能不生效的问题 #53834 @qw4990
    • 修复在某些情况下,元数据锁使用不当可能导致使用 plan cache 时写入异常数据的问题 #53634 @zimulala
    • 修复在事务内的语句被 OOM 终止之后,如果在当前事务内继续执行下一条语句,可能报错 Trying to start aggressive locking while it's already started 并发生 panic 的问题 #53540 @MyonKeminta
  • TiKV

    • 修复将 JSON_ARRAY_APPEND() 函数下推至 TiKV 导致 TiKV panic 的问题 #16930 @dbsid
    • 修复 leader 未及时清理发送失败的 snapshot 文件的问题 #16976 @hbisheng
    • 修复高并发的 Coprocessor 请求可能导致 TiKV OOM 的问题 #16653 @overvenus
    • 修复在线变更 raftstore.periodic-full-compact-start-times 配置项可能会导致 TiKV panic 的问题 #17066 @SpadeA-Tang
    • 修复执行 make dockermake docker_test 失败的问题 #17075 @shunki-fujita
    • 修复 gRPC request sources duration 在监控中显示错误的问题 #17133 @King-Dylan
    • 修复设置 gRPC 消息的压缩算法 (grpc-compression-type) 对 TiKV 发送到 TiDB 的消息不起作用的问题 #17176 @ekexium
    • 修复 tikv-ctl 的 raft region 命令的输出中未包含 Region 状态信息的问题 #17037 @glorv
    • 修复 advance-ts-interval 配置未被用于限制 CDC 和 log-backup 模块中 check_leader 操作的 timeout,导致在某些情况下 TiKV 正常重启时 resolved_ts lag 过大的问题 #17107 @MyonKeminta
  • PD

    • 修复 ALTER PLACEMENT POLICY 无法修改 placement policy 的问题 #52257 #51712 @jiyfhust
    • 修复写热点调度可能会违反放置策略 (placement policy) 约束的问题 #7848 @lhy1024
    • 修复使用 Placement Rules 的情况下,down peer 可能无法恢复的问题 #7808 @rleungx
    • 修复取消资源组查询导致大量重试的问题 #8217 @nolouch
    • 修复手动切换 PD leader 可能失败的问题 #8225 @HuSharp
  • TiFlash

    • 修复在含空分区的分区表上执行查询时,可能会超时的问题 #9024 @JinheLin
    • 修复在存算分离架构下,DDL 新增带有 not null 属性的列后,查询可能返回错误的 null 值的问题 #9084 @Lloyd-Pottiger
    • 修复函数 SUBSTRING_INDEX() 可能导致 TiFlash Crash 的问题 #9116 @wshwsh12
    • 修复通过 BR 或 TiDB Lightning 导入数据后,FastScan 模式下可能读到大量重复行数据的问题 #9118 @JinheLin
  • Tools

    • Backup & Restore (BR)

      • 修复由于 EndKey 为空导致恢复事务 KV 集群失败的问题 #52574 @3pointer
      • 修复 PD 连接失败导致日志备份 advancer owner 所在的 TiDB 可能崩溃的问题 #52597 @YuJuncen
      • 修复日志备份在 advancer owner 发生迁移后可能被暂停的问题 #53561 @RidRisR
      • 修复在恢复过程中,由于多层重试导致 BR 无法正确识别错误的问题 #54053 @RidRisR
      • 修复用于获取 TiKV 配置的连接可能未被关闭的问题 #52595 @RidRisR
      • 修复测试用例 TestStoreRemoved 不稳定的问题 #52791 @YuJuncen
      • 修复 PITR 恢复过程中 TiFlash 崩溃的问题 #52628 @RidRisR
      • 修复增量备份过程中扫描 DDL 作业的效率较低的问题 #54139 @3pointer
      • 修复断点备份过程中查找 Region leader 中断导致备份性能受影响问题 #17168 @Leavrth
    • TiCDC

      • 修复 Grafana 监控中的 Kafka Outgoing Bytes 面板显示不准确的问题 #10777 @asddongmen
      • 修复在多节点环境下进行大量 UPDATE 操作时,反复重启 Changefeed 可能导致的数据不一致问题 #11219 @lidezhu
    • TiDB Data Migration (DM)

      • 升级 go-mysql 以修复连接阻塞的问题 #11041 @D3Hunter
      • 修复同步 MariaDB 数据时 SET 语句导致 DM panic 的问题 #10206 @dveeden
    • TiDB Lightning

      • 修复 TiDB Lightning 导入 zstd 压缩文件时可能报错的问题 #53587 @lance6716
    • Dumpling

      • 修复 Dumpling 在同时导出表和视图时报错的问题 #53682 @tangenta
    • TiDB Binlog

      • 修复开启 TiDB Binlog 后,在 ADD COLUMN 执行过程中删除行可能报错 data and columnID count not match 的问题 #53133 @tangenta

贡献者

感谢来自 TiDB 社区的贡献者们:

文档内容是否有帮助?