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 出现明显的性能瓶颈且无法升级配置的情况下,建议考虑使用该模式。更多信息,请参考用户文档。
TiDB 允许用户使用命令
SET RESOURCE GROUP
或 HintRESOURCE_GROUP()
切换到其他资源组,这可能会造成部分数据库用户对资源组的滥用。TiDB v8.2.0 增加了对资源组切换行为的管控,只有被授予动态权限RESOURCE_GROUP_ADMIN
或者RESOURCE_GROUP_USER
的数据库用户,才能切换到其他资源组,以加强对系统资源的保护。为了维持兼容性,从旧版本升级到 v8.2.0 及之后版本的集群维持原行为不变。通过设置新增变量
tidb_resource_control_strict_mode
为ON
,来开启上述的增强权限控制。更多信息,请参考用户文档。
可观测性
在一些场景下,用户希望多数执行计划能够被缓存,以节省执行开销,并降低延迟。目前执行计划缓存对 SQL 有一定限制,部分形态 SQL 的执行计划无法被缓存,但是用户很难识别出无法被缓存的 SQL 以及对应的原因。因此,从 v8.2.0 开始,为系统表
STATEMENTS_SUMMARY
增加了新的列PLAN_CACHE_UNQUALIFIED
和PLAN_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+http
和pulsar+https
连接协议 #11336 @SandeepPadhi在 v8.2.0 之前,TiCDC Pulsar Sink 仅支持使用
pulsar
和pulsar+ssl
协议进行连接。从 v8.2.0 开始,TiCDC Pulsar Sink 新增支持使用pulsar+http
和pulsar+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 会根据集群规模自适应调整执行 ANALYZE 时 scan 操作的并发度。 |
tidb_analyze_skip_column_types | 修改 | 从 v8.2.0 开始,默认设置下,TiDB 不会收集类型为 MEDIUMTEXT 和 LONGTEXT 的列,避免潜在的 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 权限控制的开关。 |
配置文件参数
配置文件 | 配置项 | 修改类型 | 描述 |
---|---|---|---|
TiDB | stats-load-concurrency | 修改 | 默认值从 5 修改为 0 ,最小值从 1 修改为 0 。0 为自动模式,根据服务器情况,自动调节并发度。 |
TiDB | token-limit | 修改 | 最大值从 18446744073709551615 (64 位平台)和 4294967295 (32 位平台)修改为 1048576 ,代表同时执行请求的 session 个数最多可以设置为 1048576 ,避免设置过大导致 TiDB Server OOM。 |
TiKV | max-apply-unpersisted-log-limit | 修改 | 默认值从 0 修改为 1024 ,代表允许 apply 已经 commit 但尚未持久化的 Raft 日志的最大数量为 1024,用于降低 TiKV 节点上因 I/O 抖动导致的长尾延迟。 |
TiKV | server.grpc-compression-type | 修改 | 该配置项现在也会影响 TiKV 向 TiDB 发送的响应消息的压缩算法。开启压缩可能消耗更多 CPU 资源。 |
TiFlash | security.redact_info_log | 修改 | 可选值新增 marker 选项。当配置项的值设置为 marker 时,日志中的用户数据会被标记符号 ‹ › 包裹。 |
系统表
- 在系统表
INFORMATION_SCHEMA.PROCESSLIST
和INFORMATION_SCHEMA.CLUSTER_PROCESSLIST
中新增SESSION_ALIAS
字段,用于显示当前连接的别名。#46889 @lcwangchao
编译器版本
- 为了提升 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.2.0 开始,TiDB 的配置项
以下为计划将在未来版本中废弃的功能:
- TiDB 在 v8.0.0 引入了系统变量
tidb_enable_auto_analyze_priority_queue
,用于控制是否启用优先队列来优化自动收集统计信息任务的排序。在未来版本中,优先队列将成为自动收集统计信息任务的唯一排序方式,系统变量tidb_enable_auto_analyze_priority_queue
将被废弃。 - TiDB 在 v8.0.0 引入了系统变量
tidb_enable_parallel_hashagg_spill
,用于控制 TiDB 是否支持并行 HashAgg 进行落盘。在未来版本中,系统变量tidb_enable_parallel_hashagg_spill
将被废弃。 - TiDB 在 v7.5.0 引入了系统变量
tidb_enable_async_merge_global_stats
,用于设置 TiDB 使用异步方式合并分区统计信息,以避免 OOM 问题。在未来版本中,分区统计信息将统一使用异步方式进行合并,系统变量tidb_enable_async_merge_global_stats
将被废弃。 - 计划在后续版本重新设计执行计划绑定的自动演进,相关的变量和行为会发生变化。
- TiDB Lightning 参数
conflict.max-record-rows
计划在未来版本中废弃,并在后续版本中删除。该参数将由conflict.threshold
替代,即记录的冲突记录数和单个导入任务允许出现的冲突记录数的上限数保持一致。
- TiDB 在 v8.0.0 引入了系统变量
以下为计划将在未来版本中移除的功能:
- 从 v8.0.0 开始,TiDB Lightning 废弃了物理导入模式下的旧版冲突检测策略,支持通过
conflict.strategy
参数统一控制逻辑导入和物理导入模式的冲突检测策略。旧版冲突检测的参数duplicate-resolution
将在未来版本中被移除。
- 从 v8.0.0 开始,TiDB Lightning 废弃了物理导入模式下的旧版冲突检测策略,支持通过
改进提升
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 的方式,提升对分区表执行
TRUNCATE
、DROP
后数据 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
Tools
Backup & Restore (BR)
- 优化备份功能,提升在大量表备份过程中遇到节点重启、扩容或网络抖动时的备份性能和稳定性 #52534 @3pointer
- 优化恢复过程中对 TiCDC Changefeed 的细粒度检查,如果 Changefeed 的 CheckpointTS 晚于数据的备份时间,则不会影响恢复操作,从而减少不必要的等待时间,提升用户体验 #53131 @YuJuncen
- 为
BACKUP
语句和RESTORE
语句添加了多个常用参数选项,例如CHECKSUM_CONCURRENCY
#53040 @RidRisR - 去掉除了
br log restore
子命令之外其它br log
子命令对 TiDBdomain
数据结构的载入,降低内存消耗 #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_options
为OFF
时,系统变量tidb_enable_column_tracking
未生效的问题 #53478 @hi-rustin - 修复在
(*PointGetPlan).StatsInfo()
执行过程中可能遇到数据竞争的问题 #49803 #43339 @qw4990 - 修复在包含数据修改操作的事务中查询带有虚拟列的表时,查询结果可能错误的问题 #53951 @qw4990
- 修复在自动收集统计信息时,系统变量
tidb_enable_async_merge_global_stats
和tidb_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 - 修复执行谓词总是为
true
的SHOW 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.TABLES
中TIDB_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
- 修复当 SQL 语句包含 Outer Join,且 Join 条件包含
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 docker
和make 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
TiFlash
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)
TiDB Lightning
Dumpling
TiDB Binlog
贡献者
感谢来自 TiDB 社区的贡献者们:
- CabinfeverB
- DanRoscigno(首次贡献者)
- ei-sugimoto(首次贡献者)
- eltociear
- jiyfhust
- michaelmdeng(首次贡献者)
- mittalrishabh
- onlyacat
- qichengzx(首次贡献者)
- SeaRise
- shawn0915
- shunki-fujita(首次贡献者)
- tonyxuqqi
- wwu(首次贡献者)
- yzhan1