TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适OLAP 场景的混合数据库。
TiDB 5.0.2 现已发布,该版本具体更新内容如下:
兼容性更改
Tools
在 cdc cli changefeed 命令中废弃 --sort-dir 参数,用户可在 cdc server 命令中设定 --sort-dir
TiCDC
新功能
TiKV
默认开启 Hibernate Region 特性
提升改进
TiDB
当内存中的统计信息缓存是最新的时,避免后台作业频繁读取 mysql.stats_histograms 表造成高 CPU 使用率
TiKV
BR 支持 S3 兼容的存储(基于 virtual-host 寻址模式)
为 TiCDC 扫描的速度添加背压 (back pressure 功能
减少 TiCDC 进行初次扫描的内存使用量
提升了悲观事务中 TiCDC Old Value 的缓存命中率
让 Region 分裂更均匀,缓解有写入热点时 Region 大小的增长速度超过分裂速度的问题
TiFlash
优化锁操作以避免 DDL 语句和读数据相互阻塞
支持 INTEGER 和 REAL 类型转化为 REAL 类型
Tools
修复备份失败却没有错误输出的问题
优化了一些含糊的报错信息
支持检查备份的版本信息
支持备份和恢复 mysql schema 下的系统表
添加关于数据表内存使用情况的监控
优化排序阶段的内存和 CPU 使用
删除了一些可能让用户困惑的无用日志信息
TiCDC
Backup & Restore (BR
Dumpling
Bug 修复
TiDB
修复了在某些情况下,使用前缀索引和 Index Join 导致的 panic 的问题
修复了 point get 的 prepare plan cache 被事务中的 point get 语句不正确使用的问题
修复了当排序规则为 ascii_bin 或 latin1_bin 时,写入错误的前缀索引值的问题
修复了正在执行的事务被 GC worker 中断的问题
修复了当 new-collation 开启且 new-row-format 关闭的情况下,点查在聚簇索引下可能出错的问题
为 Shuffle Hash Join 重构分区键的转换功能
修复了当查询包含 HAVING 子句时,在构建计划的过程中 panic 的问题
修复了列裁剪优化导致 Apply 算子和 Join 算子执行结果错误的问题
修复了从 Async Commit 回退的主锁无法被清除的问题
修复了一个统计信息 GC 的问题,该问题可能导致重复的 fm-sketch 记录
当悲观锁事务收到 ErrKeyExists 错误时,避免不必要的悲观事务回滚
修复了当 sql_mode 包含 ANSI_QUOTES 时,数值字面值无法被识别的问题
禁止如 INSERT INTO table PARTITION (<partitions> ... ON DUPLICATE KEY UPDATE 的语句从 non-listed partitions 读取数据
修复了当 SQL 语句包含 GROUP BY 以及 UNION 时,可能会出现的 index out of range 的问题
修复了 CONCAT 函数错误处理排序规则的问题
修复了全局变量 collation_server 对新会话无法生效的问题
TiKV
修复了由于读取旧值而导致的 TiCDC OOM 问题
修复了聚簇主键列在次级索引上的 latin1_bin 字符集出现空值的问题
新增 abort-on-panic 配置,允许 TiKV 在 panic 时生成 core dump 文件。用户仍需正确配置环境以开启 core dump。
修复了 TiKV 不繁忙时 point get 查询性能回退的问题
PD
修复在 store 数量多的情况下,切换 PD Leader 慢的问题
修复删除不存在的 evict leader 调度器时出现 panic 的问题
修复 offline peer 在合并完后未更新统计的问题
TiFlash
修复并发复制共享 Delta 索引导致结果错误的问题
修复当存在数据缺失的情况下 TiFlash 无法启动的问题
修复旧的 dm 文件无法被自动清理的问题
修复 TiFlash 在 Compaction Filter 特性开启时可能崩溃的问题
修复 ExchangeSender 可能传输重复数据的问题
修复了从 Async Commit 回退的锁无法被 TiFlash 清除的问题
修复当 TIMEZONE 类型的转换结果包含 TIMESTAMP 类型时返回错误结果的问题
修复 TiFlash 在 Segment Split 期间异常退出的问题
修复非根节点 MPP 任务的执行信息显示不正确的问题
Tools
修复在生成 KV 数据时可能发生的 panic 问题
修复 TiDB-backend 模式下因没有开启 autocommit 而无法加载数据的问题
修复数据导入期间 Batch Split Region 因键的总大小超过 Raft 条目限制而可能失败的问题
修复 log restore 时丢失删除事件的问题
修复 BR 发送过多无用 RPC 请求到 TiKV 的问题
修复备份失败却没有错误输出的问题
修复 Avro 输出中丢失时区信息的问题
支持清理 Unified Sorter 过期的文件并禁止共享 sort-dir 目录
修复存在大量过期 Region 信息时 KV 客户端可能锁死的问题
修复 --cert-allowed-cn 参数中错误的帮助消息
修复因更新 explicit_defaults_for_timestamp 而需要 MySQL SUPER 权限的问题
添加 sink 流控以降低内存溢出的风险
修复调度数据表时可能发生的同步终止问题
修复 TiCDC changefeed 断点卡住导致 TiKV GC safe point 不推进的问题
TiCDC
Backup & Restore (BR