TiDB 7.5.7 Release Notes
发版日期:2025 年 9 月 4 日
TiDB 版本:7.5.7
兼容性变更
将系统变量
tidb_enable_historical_stats
的默认值从ON
修改为OFF
,即默认关闭历史统计信息,避免潜在的稳定性问题 #53048 @hawkingreiTiKV 废弃以下配置项,并由新的
gc.auto-compaction
配置项替代,用于控制自动 compaction 行为 #18727 @v01dstar- 废弃配置项:
region-compact-check-interval
、region-compact-check-step
、region-compact-min-tombstones
、region-compact-tombstones-percent
、region-compact-min-redundant-rows
和region-compact-redundant-rows-percent
。 - 新增配置项:
gc.auto-compaction.check-interval
、gc.auto-compaction.tombstone-num-threshold
、gc.auto-compaction.tombstone-percent-threshold
、gc.auto-compaction.redundant-rows-threshold
、gc.auto-compaction.redundant-rows-percent-threshold
和gc.auto-compaction.bottommost-level-force
。
- 废弃配置项:
改进提升
TiDB
- 新增数据导入期间 Region 分裂与数据 ingest 的流控接口 #61553 @tangenta
- 优化对大数据量的表进行简单查询时获取数据分布信息的性能 #53850 @you06
- 为索引添加过程新增监控指标,便于观察写入 TiKV 的速度 #60925 @CbcWestwolf
- 优化 DML 在 DDL 执行期间的加锁逻辑,减少 DML 与 DDL 的锁冲突,提高部分场景下 DDL 的性能。但是由于引入了额外的二级索引加锁操作,可能会导致 DML 性能轻微下降 #62337 @lcwangchao
- 改进当系统变量
tidb_opt_ordering_index_selectivity_threshold
的值设置为1
时的行为,增强该变量的控制能力 #60242 @time-and-fate - 避免
ANALYZE
语句执行完成后需要刷新整个集群的统计信息,从而缩短ANALYZE
的执行时间 #57631 @0xPoe - 常量折叠支持在带有
NOT NULL
约束的列上,将IS NULL
计算折叠为FALSE
#62050 @hawkingrei - 优化器支持在更多类型的
JOIN
中进行常量传播 #51700 @hawkingrei - 优化在 DML 与 DDL 存在大量锁冲突时,合并临时索引 (temp index) 的性能 #61433 @tangenta
TiKV
- 优化 TiKV compaction 的触发逻辑,按回收效率排序对所有数据段依次处理,降低 MVCC 冗余数据对性能的影响 #18571 @v01dstar
- 优化在存在大量 SST 文件的环境中 async snapshot 和 write 的尾延迟 #18743 @Connor1996
- 优化空表和小 Region 场景下 Region Merge 的速度 #17376 @LykxSassinator
- 优化 Raftstore 中
CompactedEvent
的处理逻辑,将其移至split-check
worker 中执行,减少对 Raftstore 主线程的阻塞 #18532 @LykxSassinator - 增加每个线程内存使用量的监控指标 #15927 @Connor1996
- 在 SST ingest 太慢时,仅输出
SST ingest is experiencing slowdowns
日志,不再调用get_sst_key_ranges
打印详细 key range,以避免引发性能抖动 #18549 @LykxSassinator - 优化 TiKV 重启时由于需要等待应用之前的日志而造成访问延时抖动的情况,提升了 TiKV 的稳定性 #15874 @LykxSassinator
- 优化残留数据清理机制,减少对请求延迟的影响 #18107 @LykxSassinator
- 优化 Raft Engine 中
fetch_entries_to
的性能,减少竞争,提升混合负载下的执行性能 #18605 @LykxSassinator - 支持在线更改写入流量控制 (flow-control) 的相关配置 #17395 @glorv
- 支持在不阻塞前台写入的情况下导入 SST 文件,降低延迟带来的影响 #18081 @hhwyt
- 优化 KvDB 和 RaftDB 分盘部署场景下 KvDB 磁盘 I/O 抖动的检测机制 #18463 @LykxSassinator
- 增加 peer 和 store 消息的 slow log #16600 @Connor1996
PD
- 在 Prometheus 中新增 GO Runtime 相关监控指标 #8931 @bufferflies
- 减少非必要的错误日志 #9370 @bufferflies
TiFlash
- 增强 TiFlash 在宽表场景下 OOM 风险相关的监测指标 #10272 @JaySon-Huang
- 增加 TiFlash 获取存储层快照的重试次数,以增强大表上查询的稳定性 #10300 @JaySon-Huang
Tools
错误修复
TiDB
- 修复
IndexMerge
和IndexLookUp
算子下发查询时,共享 KV Request 导致数据竞争 (Data Race) 的问题 #60175 @you06 - 修复 Hash Aggregation 算子可能存在 goroutine 泄漏的问题 #58004 @xzhangxian1008
- 修复当生成列上的索引设置为可见时,可能无法选中 MPP 计划的问题 #47766 @AilinKid
- 修复包含
_charset(xxx), _charset(xxx2), ...
的 SQL 语句生成不同 Digest 的问题 #58447 @xhebox - 修复频繁合并 Region 导致 TTL 任务无法启动的问题 #61512 @YangKeao
- 修复执行有损 DDL 后,查询 TiFlash 数据结果不一致的问题 #61455 @Lloyd-Pottiger
- 修复
ALTER RANGE meta SET PLACEMENT POLICY
的 key 范围错误的问题 #60888 @nolouch - 修复 Grafana 中 Stats Healthy Distribution 面板的数据可能错误的问题 #57176 @hawkingrei
- 修复
latin1_bin
与utf8mb4_bin
、utf8_bin
的比较方式不相同的问题 #60701 @hawkingrei - 修复禁用元数据锁 (Metadata Locking, MDL) 后,DDL 更新 schema 版本失败后卡住的问题 #61210 @wjhuang2016
- 修复 Redact 日志开启后在部分场景不生效的问题 #59279 @tangenta
- 修复当 Fix Control #44855 开启时,TiDB 的会话可能崩溃的问题 #59762 @winoros
- 删除 IndexLookup 算子发生
context canceled
错误时冗余的日志信息 #61072 @yibin87 - 修复对统计信息的异常处理不当导致后台任务超时的时候,内存内的统计信息被误删除的问题 #57901 @hawkingrei
- 修复执行
ADD UNIQUE INDEX
可能导致数据不一致的问题 #60339 @tangenta - 修复统计信息系统表展示非
public
索引的问题 #60430 @tangenta - 修复
PhysicalExchangeSender.HashCol
浅拷贝 (Shallow Copy) 导致的 TiFlash crash 或者结果错误的问题 #60517 @windtalker - 修复
BIT
类型表的统计信息无法加载的问题 #62289 @YangKeao - 修复无法将
BIT
类型的列的统计信息加载入内存的问题 #59759 @YangKeao - 修复 Hash Join v1 算子的
Close()
方法 panic 时没有恢复的问题 #60926 @xzhangxian1008 - 修复极端情况下当
ANALYZE
语句的落盘操作耗时太长时,可能导致其他 TiDB 节点无法更新最新统计信息的问题 #54552 @0xPoe - 修复当收集的列统计信息完全为 TopN 时,即使有后续写入操作,估算也有可能一直为 0 的问题 #47400 @terry1purcell
- 修复
explain format="cost_trace"
展示的估算代价可能有误的问题 #61155 @hawkingrei - 修复
explain format="cost_trace"
展示的代价计算公式中可能包含空括号的问题 #61127 @hawkingrei - 修复外键定义成环时的死循环问题 #60985 @hawkingrei
- 修复内部查询在使用
NULL
构造索引范围查询时可能构造能力不足的问题 #62196 @hawkingrei - 修复 Plan Cache 缓存了错误的执行计划导致执行报错的问题 #56772 @dash12653
- 修复估算跨月或跨年的行数时,结果可能过分偏大的问题 #50080 @terry1purcell
- 修复
ANALYZE
子任务并发数大幅超出设置的上限的问题 #61785 @hawkingrei - 修复在 TopN 下推过程中错误地生成带表达式的 TopN 排序项 #60655 @hawkingrei
- 修复当缺少列或索引的统计信息时,TiDB 可能在后台打印 panic 日志的问题 #61733 @winoros
- 修复当缺少列或索引的统计信息时,
JOIN
的行数估算可能偏差过大的问题 #61602 @qw4990 - 修复系统变量
tidb_cost_model_version
的默认值设置错误的问题 #61565 @hawkingrei - 修复当表的第一列为虚拟生成列时,统计信息可能出错的问题 #61606 @winoros
- 修复错误地跳过 Plan Cache,并出现谓词简化的问题 #61513 @hawkingrei
- 修复加索引时执行
ADMIN CANCEL DDL JOBS
导致加索引卡住的问题 #61087 @tangenta - 修复在某些内部 SQL 执行失败后,
ADMIN CHECK
仍然返回成功的问题 #61612 @joechenrh - 修复通过 multi-schema change 加多个索引后,数据索引不一致的问题 #61255 @tangenta
- 修复
TiKV
- 修复 CPU profiling 期间可能触发死锁的问题 #18474 @YangKeao
- 修复 Online Unsafe Recovery 可能被某些 TiFlash 副本阻塞,导致 commit index 无法推进的问题 #18197 @v01dstar
- 修复 TiKV 可能使用客户端无法解码的压缩算法的问题 #18079 @ekexium
- 修复高并发场景下 TiKV 过量放行 SST 导入请求的问题 #18452 @hbisheng
- 修复 Grafana TiKV 组件中的
Ingestion picked level
和Compaction Job Size(files)
显示不正确的问题 #15990 @Connor1996 - 修复 TiKV 重启后出现非预期的
Server is busy
报错 #18233 @LykxSassinator - 修复巴西和埃及时区转换错误的问题 #16220 @overvenus
- 修复慢日志中
StoreMsg
日志信息存在误导性描述的问题 #18561 @LykxSassinator - 修复错误的线程内存监控指标 #18125 @Connor1996
- 修复 TiKV 在正常退出时未能终止正在进行的手动 compaction 任务的问题 #18396 @LykxSassinator
PD
TiFlash
- 修复在运行
IMPORT INTO
或BR restore
的时候,部分 SST 文件可能被意外删除导致 TiFlash panic 的问题 #10141 @CalvinNeo - 修复创建
((NULL))
形式的表达式索引会导致 TiFlash panic 的问题 #9891 @JaySon-Huang - 修复 TiFlash 处理带有不规则 key-range 的 Region snapshot 时可能 panic 的问题 #10147 @JaySon-Huang
- 修复当集群的表中存在大量
ENUM
类型列时,TiFlash 的内存可能会大量消耗问题 #9947 @JaySon-Huang - 修复插入单行超过 16 MiB 的数据后,TiFlash 可能无法正常重启的问题 #10052 @JaySon-Huang
- 修复 Resource Control Low Token Signal 丢失导致查询被限速的问题 #10137 @guo-shaoge
- 修复执行包含
GROUP BY ... WITH ROLLUP
的 SQL 语句时,可能会出现Exception: Block schema mismatch
报错的问题 #10110 @gengliqi
- 修复在运行
Tools
Backup & Restore (BR)
TiCDC
- 修复当使用外部存储作为下游时 Changefeed 可能会卡住的问题 #9162 @asddongmen
- 修复同步流量超过了下游 Kafka 的流量阀值后,Changefeed 可能会卡住的问题 #12110 @3AceShowHand
- 修复使用
--overwrite-checkpoint-ts
参数执行changefeed pause
命令可能导致 Changefeed 卡住的问题 #12055 @hongyunyan - 修复在包含虚拟列的表中计算事件过滤表达式时 panic 的问题 #12206 @lidezhu
- 修复 dispatcher 配置中列名和索引名大小写敏感匹配的问题 #12103 @wk989898
- 修复在相同 IP 地址上扩缩容 TiKV 节点后,因使用过期的 store ID 导致 resolved ts 延迟持续上升的问题 #12162 @3AceShowHand
TiDB Lightning
- 修复将 Parquet 文件从云存储导入到 TiDB 时,TiDB Lightning 可能会卡住达数小时的问题 #60224 @joechenrh
- 修复 TiDB Lightning 向 TiKV 发起的 RPC 请求超时后返回
context deadline exceeded
的问题 #61326 @OliverS929
NG Monitoring