TiDB 8.1.1 Release Notes
发版日期:2024 年 8 月 27 日
TiDB 版本:8.1.1
兼容性变更
- 使用 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 - 将变量
tidb_enable_parallel_hashagg_spill
的默认值从ON
修改为OFF
,以避免落盘导致并行计算过程中查询结果出错的问题。对于从 v8.0.0 或 v8.1.0 升级到 v8.1.1 的集群,升级后该变量会保持之前的默认值ON
,建议将其手动修改为OFF
。#55290 @xzhangxian1008
离线包变更
在 v8.1.1 中,TiDB-community-toolkit
二进制软件包移除了 arbiter
。
改进提升
TiDB
- 通过批量删除 TiFlash placement rule 的方式,提升对分区表执行
TRUNCATE
、DROP
后数据 GC 的处理速度 #54068 @Lloyd-Pottiger - 在 MPP 负载均衡时移除不包含任何 Region 的 Store #52313 @xzhangxian1008
- 将统计信息同步加载任务的优先级暂时调整为
High
,避免在 TiKV 高负载时同步加载任务大面积超时,从而导致统计信息无法加载 #50332 @winoros EXPLAIN
语句支持应用tidb_redact_log
,并进一步优化了日志记录的处理逻辑 #54565 @hawkingrei
- 通过批量删除 TiFlash placement rule 的方式,提升对分区表执行
PD
TiFlash
- 降低 TiFlash 在开启 TLS 后因更新证书而导致 panic 的概率 #8535 @windtalker
- 减少数据高并发读取下的锁冲突,优化短查询性能 #9125 @JinheLin
Tools
Backup & Restore (BR)
TiCDC
- 支持使用 Simple Protocol 的 changefeed 在启动时将所有表的 BOOTSTRAP 消息一次性发送到下游 #11315 @asddongmen
- 支持当下游为消息队列 (Message Queue, MQ) 或存储服务时直接输出原始事件 #11211 @CharlesCheung96
错误修复
TiDB
- 修复 HashAgg 算子在并行计算过程中因落盘导致查询结果不正确的问题 #55290 @xzhangxian1008
- 修复当 SQL 异常中断时,
INDEX_HASH_JOIN
无法正常退出的问题 #54688 @wshwsh12 - 修复可以创建非严格自增的 RANGE 分区表的问题 #54829 @Defined2014
- 修复可以生成
_tidb_rowid
的点查 (PointGet
) 执行计划的问题 #54583 @Defined2014 - 修复慢日志中内部语句中的 SQL 默认被脱敏为空的问题 #54190 #52743 #53264 @lcwangchao
- 修复
UPDATE
操作在多表场景下导致 TiDB OOM 的问题 #53742 @hawkingrei - 修复窗口函数中有某些子查询时可能会 panic 的问题 #42734 @hi-rustin
- 修复当排序规则为
utf8_bin
或utf8mb4_bin
时意外消除LENGTH()
条件的错误 #53730 @elsa0520 - 修复在事务内的语句被 OOM 终止之后,如果在当前事务内继续执行下一条语句,可能报错
Trying to start aggressive locking while it's already started
并发生 panic 的问题 #53540 @MyonKeminta - 修复使用
PREPARE
/EXECUTE
方式执行带CONV
表达式的语句,且CONV
表达式包含?
参数时,多次执行可能导致查询结果错误的问题 #53505 @qw4990 - 修复递归的 CTE 算子错误地跟踪内存使用的问题 #54181 @guo-shaoge
- 修复使用
SHOW WARNINGS;
获取警告时可能导致 panic 的问题 #48756 @xhebox - 修复 TopN 算子可能被错误地下推的问题 #37986 @qw4990
- 修复执行谓词总是为
true
的SHOW ERRORS
语句导致 TiDB panic 的问题 #46962 @elsa0520 - 修复
INFORMATION_SCHEMA.TIDB_TRX
表中STATE
字段的size
未定义导致STATE
显示为空的问题 #53026 @cfzjywxk - 修复执行
SELECT DISTINCT CAST(col AS DECIMAL), CAST(col AS SIGNED) FROM ...
查询时结果出错的问题 #53726 @hawkingrei - 修复 DDL 错误使用 etcd 导致任务排队的问题 #52335 @wjhuang2016
- 修复 GlobalStats 中的
Distinct_count
信息可能错误的问题 #53752 @hawkingrei - 修复在自动收集统计信息时,系统变量
tidb_enable_async_merge_global_stats
和tidb_analyze_partition_concurrency
未生效的问题 #53972 @hi-rustin - 修复当第一个参数是
month
并且第二个参数是负数时,TIMESTAMPADD()
函数会进入无限循环的问题 #54908 @xzhangxian1008 - 修复某些连接在握手完成之前退出导致 Grafana 监控指标中的连接数 (Connection Count) 不正确的问题 #54428 @YangKeao
- 修复使用 TiProxy 和资源组 (Resource Group) 功能时,每个资源组的连接数 (Connection Count) 显示不正确的问题 #54545 @YangKeao
- 修复在递归 CTE 中无法使用视图的问题 #49721 @hawkingrei
- 修复 Massively Parallel Processing (MPP) 中
final
AggMode 和non-final
AggMode 无法共存的问题 #51362 @AilinKid - 修复使用 Optimizer Hints 时,可能输出错误的 WARNINGS 信息的问题 #53767 @hawkingrei
- 修复在
HashJoin
或IndexLookUp
算子作为Apply
算子的被驱动侧子节点时,由于memTracker
未被析构而导致的内存异常高的问题 #54005 @XuHuaiyu - 修复某些情况下可以创建非法的
DECIMAL(0,0)
列类型的问题 #53779 @tangenta - 修复在
(*PointGetPlan).StatsInfo()
执行过程中可能遇到数据竞争的问题 #49803 #43339 @qw4990 - 修复在某些情况下,元数据锁使用不当可能导致使用 plan cache 时写入异常数据的问题 #53634 @zimulala
- 修复 JSON 相关函数在某些情况下报错信息与 MySQL 不一致的问题 #53799 @dveeden
- 修复创建带有外键的表时,TiDB 未创建对应的统计信息元信息 (
stats_meta
) 的问题 #53652 @hawkingrei - 修复
memory_quota
Hint 在子查询中可能不生效的问题 #53834 @qw4990 - 修复 TiDB 启动加载统计信息时可能因为 GC 推进报错的问题 #53592 @you06
- 修复并发执行
CREATE OR REPLACE VIEW
可能报错table doesn't exist
的问题 #53673 @tangenta - 修复 information schema 缓存未命中导致 stale read 查询延迟上升的问题 #53428 @crazycs520
- 修复在聚簇索引作为谓词时
SELECT INTO OUTFILE
不生效的问题 #42093 @qw4990 - 修复
YEAR
类型的列与超出范围的无符号整数进行比较导致错误结果的问题 #50235 @qw4990 - 修复在包含数据修改操作的事务中查询带有虚拟列的表时,查询结果可能错误的问题 #53951 @qw4990
- 修复使用
auth_socket
认证插件时,TiDB 在某些情况下未能拒绝不符合身份认证的用户连接的问题 #54031 @lcwangchao - 修复当查询包含非关联子查询和
LIMIT
子句时,列剪裁可能不完善导致计划不优的问题 #54213 @qw4990 - 修复将数据从
FLOAT
类型转换为UNSIGNED
类型时结果错误的问题 #41736 @guo-shaoge - 修复通过分布式执行框架添加索引时,设置
max-index-length
导致 TiDB panic 的问题 #53281 @zimulala - 修复查询中的某些过滤条件可能导致 planner 模块发生
invalid memory address or nil pointer dereference
报错的问题 #53582 #53580 #53594 #53603 @YangKeao - 修复递归 CTE 查询可能导致无效指针的问题 #54449 @hawkingrei
- 修复
Longlong
类型在谓词中溢出的问题 #45783 @hawkingrei - 修复在
GROUP BY
语句中引用间接占位符?
无法找到列的问题 #53872 @qw4990 - 修复事务占用的内存可能被多次重复统计的问题 #53984 @ekexium
- 修复使用
CURRENT_DATE()
作为列默认值时查询结果错误的问题 #53746 @tangenta - 修复使用全局排序添加索引时性能不稳定的问题 #54147 @tangenta
- 修复从 v7.1 升级后
SHOW IMPORT JOBS
报错Unknown column 'summary'
的问题 #54241 @tangenta - 修复
root
用户无法查询tidb_mdl_view
的问题 #53292 @tangenta - 修复使用分布式框架添加索引期间出现网络分区可能导致数据索引不一致的问题 #54897 @tangenta
- 修复 TiDB Lightning 物理导入模式初始化期间报错可能导致资源泄露的问题 #53659 @D3Hunter
- 修复当视图定义中使用子查询作为列定义时,通过
information_schema.columns
获取列信息返回告警 Warning 1356 的问题 #54343 @lance6716 - 修复使用索引加速添加唯一索引在遇到 owner 切换时可能导致
Duplicate entry
报错的问题 #49233 @lance6716 - 修复设置
global.tidb_cloud_storage_uri
时报错信息不清晰的问题 #54096 @lance6716 - 修复 Sync Load QPS 监控指标显示不正确的问题 #53558 @hawkingrei
- 修复并发加载初始统计信息时可能遗漏加载的问题 #53607 @hawkingrei
- 修复针对
SELECT ... FOR UPDATE
复用了错误点查询计划的问题 #54652 @qw4990
TiKV
- 修复
advance-ts-interval
配置未被用于限制 CDC 和 log-backup 模块中check_leader
操作的 timeout,导致在某些情况下 TiKV 正常重启时resolved_ts
lag 过大的问题 #17107 @MyonKeminta - 修复设置 gRPC 消息的压缩算法 (
grpc-compression-type
) 对 TiKV 发送到 TiDB 的消息不起作用的问题 #17176 @ekexium - 修复执行
make docker
和make docker_test
失败的问题 #17075 @shunki-fujita - 修复 gRPC request sources duration 在监控中显示错误的问题 #17133 @King-Dylan
- 修复 tikv-ctl 的
raft region
命令的输出中未包含 Region 状态信息的问题 #17037 @glorv - 修复在线变更
raftstore.periodic-full-compact-start-times
配置项可能会导致 TiKV panic 的问题 #17066 @SpadeA-Tang - 修复 TiKV 在应用损坏的 Raft 数据快照时反复 panic 的问题 #15292 @LykxSassinator
- 修复缓存条目在尚未被持久化时就被释放导致 TiKV panic 的问题 #17040 @glorv
- 修复
PD
- 修复获取表属性时错误调用 PD API 的问题 #55188 @JmPotato
- 修复
INFORMATION_SCHEMA.RUNAWAY_WATCHES
表中时间类型不正确的问题 #54770 @HuSharp - 修复部分日志未脱敏的问题 #8419 @rleungx
- 修复
Filter
监控项缺少部分数据的问题 #8098 @nolouch - 修复 HTTP 客户端在开启 TLS 时可能 panic 的问题 #8237 @okJiang
- 修复加密管理器在使用前未初始化的问题 #8384 @rleungx
- 修复资源组 (Resource Group) 在高并发场景下无法有效限制资源使用的问题 #8435 @nolouch
- 修复
store limit
相关的数据竞争问题 #8253 @lhy1024 - 修复开启
scheduling
微服务后,扩缩容进度显示错误的问题 #8331 @rleungx - 修复开启
tso
微服务后,TSO 节点无法动态更新的问题 #8154 @rleungx - 修复资源组遇到的数据竞争问题 #8267 @HuSharp
- 修复资源组在请求 token 超过 500 ms 时遇到超出配额限制的问题 #8349 @nolouch
- 修复手动切换 PD leader 可能失败的问题 #8225 @HuSharp
- 修复 etcd client 中已经删除的节点仍然出现在候选连接列表中的问题 #8286 @JmPotato
- 修复
ALTER PLACEMENT POLICY
无法修改 placement policy 的问题 #52257 #51712 @jiyfhust - 修复写热点调度可能会违反放置策略 (placement policy) 约束的问题 #7848 @lhy1024
- 修复使用 Placement Rules 的情况下,down peer 可能无法恢复的问题 #7808 @rleungx
- 修复取消资源组查询导致大量重试的问题 #8217 @nolouch
- 修复 PD 在进行 operator 检查时遇到的数据竞争问题 #8263 @lhy1024
- 修复将角色 (role) 绑定到资源组时未报错的问题 #54417 @JmPotato
- 修复将 TiKV 配置项
coprocessor.region-split-size
设置为小于 1 MiB 的值会导致 PD panic 的问题 #8323 @JmPotato
TiFlash
- 修复 TiFlash 与任意 PD 之间发生网络分区(即网络连接断开),可能导致读请求超时报错的问题 #9243 @Lloyd-Pottiger
- 修复函数
SUBSTRING_INDEX()
可能导致 TiFlash Crash 的问题 #9116 @wshwsh12 - 修复通过 BR 或 TiDB Lightning 导入数据后,FastScan 模式下可能读到大量重复行数据的问题 #9118 @JinheLin
- 修复数据库创建后短时间内被删除时,TiFlash 可能 panic 的问题 #9266 @JaySon-Huang
- 修复将 TiFlash 中 SSL 证书配置项设置为空字符串会错误开启 TLS 并导致 TiFlash 启动失败的问题 #9235 @JaySon-Huang
- 修复在存算分离架构下,DDL 新增带有 not null 属性的列后,查询可能返回错误的 null 值的问题 #9084 @Lloyd-Pottiger
- 修复跨数据库对含空分区的分区表执行
RENAME TABLE ... TO ...
后,TiFlash 可能 panic 的问题 #9132 @JaySon-Huang - 修复在含空分区的分区表上执行查询时,可能会超时的问题 #9024 @JinheLin
- 修复开启延迟物化后,部分查询在执行时可能报列类型不匹配错误的问题 #9175 @JinheLin
- 修复开启延迟物化后,带有虚拟生成列的查询可能返回错误结果的问题 #9188 @JinheLin
Tools
Backup & Restore (BR)
- 修复断点备份过程中查找 Region leader 中断导致备份性能受影响问题 #17168 @Leavrth
- 修复增量备份过程中扫描 DDL 作业的效率较低的问题 #54139 @3pointer
- 修复在恢复过程中,由于多层重试导致 BR 无法正确识别错误的问题 #54053 @RidRisR
- 修复由于
EndKey
为空导致恢复事务 KV 集群失败的问题 #52574 @3pointer - 修复日志备份在 advancer owner 发生迁移后可能被暂停的问题 #53561 @RidRisR
- 修复增量恢复过程中
ADD INDEX
、MODIFY COLUMN
等需要回填的 DDL 可能无法正确恢复的问题 #54426 @3pointer - 修复 PD 连接失败导致日志备份 advancer owner 所在的 TiDB 可能崩溃的问题 #52597 @YuJuncen
TiCDC
- 修复 Region 变更导致下游 panic 的问题 #17233 @hicqu
- 修复当上游未启用新的排序规则时,TiCDC 无法正确解码聚簇索引表中的主键的问题 #11371 @lidezhu
- 修复拆分
UPDATE
事件后校验码未正确设置为0
的问题 #11402 @3AceShowHand - 修复在多节点环境下进行大量
UPDATE
操作时,反复重启 Changefeed 可能导致的数据不一致问题 #11219 @lidezhu - 修复当下游 Kafka 无法访问时,Processor 模块可能卡住的问题 #11340 @asddongmen
TiDB Data Migration (DM)
TiDB Lightning
Dumpling
TiDB Binlog