TiDB 4.0.9 Release Notes

    TiDB 版本:4.0.9

    • TiDB

      • 废弃配置文件中 配置项
    • TiKV

      • 减少开启加密时的 I/O 开销和锁冲突。该修改向下不兼容。如果需要降级至 v4.0.9 以下,需要将 security.encryption.enable-file-dictionary-log 配置为 false,并在降级前重启 #9195
    • TiFlash

      • 支持将存储引擎的新数据分布在多个硬盘上,分摊 I/O 压力(实验特性)
    • TiDB Dashboard

      • SQL 语句分析功能的列表界面支持显示所有字段并排序 #749
      • 集群拓扑页面支持缩放
      • SQL 语句分析及慢日志页面支持显示 SQL 语句的临时存储占用大小 #777
      • SQL 语句分析及慢日志列表界面支持导出列表数据
      • 支持配置自定义 Prometheus 地址 #808
      • 新增集群实例统计摘要页面
      • 慢日志详情页面新增更多时间字段 #810
    • TiDB

      • 在转换等值条件为其它条件时,通过使用启发式规则,避免生成 (index) merge join 以得到更好的执行计划 #21146
      • 区分用户变量的类型
      • 在配置文件中添加了 performance.gogc 配置项,用于设置 GOGC #20922
      • 提升 TimestampDatetime 类型的二进制输出结果与 MySQL 的兼容性
      • 优化用户使用 LOCK IN SHARE MODE SQL 语句时输出的报错信息 #21005
      • 优化在可剪切的表达式进行常量折叠时输出的错误信息,避免输出不必要的警告或错误信息
      • 优化 LOAD DATA 语句执行 PREPARE 时的报错信息 #21199
      • 修改整型列的类型时,忽略掉整型字段的零值填充的属性
      • EXPLAIN ANALYZE 结果中输出 DML 语句执行器相关运行时的信息 #21066
      • 禁止在一条语句中对主键做出多次不同的修改
      • 添加连接空闲时间的监控项 #21301
      • 新增运行 runtime/trace 分析工具时系统自动临时开启慢日志的功能
    • TiKV

      • 添加标记以跟踪 split 命令的来源 #8936
      • 支持动态修改 pessimistic-txn.pipelined 配置项
      • 减少运行 Backup & Restore 和 TiDB Lightning 时对系统的性能影响 #9098
      • 添加 Ingesting SST 报错的监控项
      • 阻止 Leader 在任意副本需要复制日志时进入休眠状态 #9093
      • 提高 Pipelined locking 的成功率
      • 调整配置项 apply-max-batch-sizestore-max-batch-size 的默认值为 1024 #9020
      • 添加 max-background-flushes 配置
      • 默认关闭 RocksDB consistency check 以提高性能 #9029
      • 将 Region 大小的查询操作移出 pd heartbeat worker 以减轻其压力
    • PD

      • TiKV store 转变为 Tombstone 状态时检查 TiKV 集群的版本号,防止用户降级和升级过程中的开启不兼容特性#3213
      • 禁止低版本的 TiKV 强制从 Tombstone 状态转为 Up
      • 对于 SQL 语句文本点击 “展开” 后支持保持展开状态 #775
      • 默认在新窗口打开 SQL 语句分析和慢日志详情
      • 改进慢日志页面部分时间字段描述 #817
      • 改进错误信息提示,显示更完整的错误内容
    • TiFlash

      • 降低 Replica read 时的延迟
      • 优化 TiFlash 的错误信息
      • 添加正在处理的 Coprocessor 请求数量的 metric
    • Tools

      • Backup & Restore (BR)

        • BR 不再接受存在歧义的 (不会正确关闭 checksum) 命令行参数,正确用法为 --checksum=false #588
        • 支持暂时性地调整 PD 的参数,在 BR 意外退出后,PD 能自动恢复回正常参数
        • 支持恢复数据表的统计信息 #622
        • 系统自动重试 read index not readyproposal in merging mode 两种错误
      • TiCDC

        • 添加对 TiKV 开启 Hibernate Region 的告警规则 #1120
        • 优化 schema storage 的内存使用
        • 增加 Unified Sorter 功能,可以在数据量较大的情况下提升增量扫阶段的同步速度(实验特性)#1122
        • 支持在 TiCDC Open Protocol 中配置单条 Kafka 消息的最大大小和包含的最大行变更数量(仅在 Kafka sink 生效)
      • Dumpling

        • 对导出失败部分的数据进行重试 #182
        • 支持同时设置 -F-r 两个参数
        • 默认不导出系统表 #194
        • 在设置 --transactional-consistency 参数时支持重建 MySQL 链接
        • 支持使用 -c,--compress 参数指定 Dumpling 使用的压缩算法,空字符串代表不压缩 #202
      • TiDB Lightning

        • 默认不恢复系统表
        • 支持为 auto-random 的主键设置默认值 #457
        • 完善 Local 模式下分裂 Region 的精度
        • 支持给 tikv-importer.region-split-sizemydumper.read-block-sizemydumper.batch-sizemydumper.max-region-size 设置可读的参数(比如 “2.5 GiB”)#471
      • TiDB Binlog

        • 在写下游出错时给 Drainer 设置非零退出码
    • TiDB

      • 修复了前缀索引和 OR 条件一起使用时结果不正确的问题
      • 修复了开启自动重试后可能出现的一处 panic #21285
      • 修复了根据列类型检查分区表定义时出现的一处问题
      • 修复了分区表对于列的类型检查的一处问题。分区表达式的值的类型和分区列的类型必须一致 #21136
      • 修复了哈希分区表对于分区名唯一性检查的问题
      • 修复非 INT 类型的值,插入到哈希分区表后结果不正确的问题 #21238
      • 修复了在部分写入类的场景中,使用了 index join 会遇到非预期报错的问题
      • 修复了在 CASE WHENBigInt 无符列的值被错误地转换成有符类型的问题 #21236
      • 修复了 index hash join 和 index merge join 没有考虑 collation 的问题
      • 修复了分区表在建表和查询时,没有考虑 collation 的问题 #21181
      • 修复了慢日志记录的查询结果可能不全的问题
      • 修复了一处数据库名大小写处理不当,导致的 DELETE 未正确删除数据的问题 #21206
      • 修复了执行 DML 语句导致 schema 的内存被覆盖的问题
      • 修复了使用 join 时,无法查询到合并后的列的问题 #21021
      • 修复了一些 semi-join 的查询结果不正确的问题
      • 修复了表锁对于 UPDATE 语句不生效的问题 #21002
      • 修复创建递归的视图出现栈溢出的问题
      • 修复了 index merge join 在执行外连接的时候,结果不符合预期的问题 #20954
      • 修复了一处事务问题,该场景下应该返回结果未知,但是却返回了执行失败
      • 修复 explain for connection 无法显示最后一次执行计划的问题 #21315
      • 修复在 Read Committed 隔离级别下,Index Merge 结果不正确的问题
      • 修复了由于事务写冲突重试导致的 auto-ID 分配失败 #21079
      • 修复了 JSON 数据无法通过 load data 无法正确导入到 TiDB 的问题
      • 修复新增加 Enum 类型列的默认值问题 #20998
      • 对于日期类型的数学计算,保留原始的数据类型信息,修复 adddate 函数插入非法值的问题
      • 修复了部分场景错误地生成了 的执行计划,导致执行结果不正确 #21244
      • ADD_DATE 函数中忽略夏令时的转换,以和 MySQL 兼容
      • 修复了对比 intyear 类型时没有将 [1, 69] 的整数转换为 [2001, 2060] 以及没有将 [70, 99] 的整数转换为 [1970, 1999] 的兼容性 bug #21283
      • 修复了 sum() 函数计算 Double 类型字段的结果溢出导致 panic 的问题
      • 修复了 DELETE 语句未能给 unique key 加悲观锁的问题 #20705
      • 修复了快照读能够命中 lock cache,返回错误结果的问题
      • 修复了在同一个事务中读取大量数据时可能发生的内存泄漏问题 #21129
      • 修复了在子查询中省略表别名时的语法解析错误问题
      • 修复了查询中 IN 函数的参数为 time 类型时可能返回错误结果的问题 #21290
      • 修复当列个数大于 255 时,下推返回错误结果集的问题
      • 修复网络隔离时 Region Merge 可能会导致数据丢失的问题 #9108
      • 修复使用 latin1 字符集时,ANALYZE 语句会导致 panic 的问题
      • 修复类型转换中将数字转成时间会得到错误结果的问题 #9031
      • 修复当开启加密时无法使用 TiDB Lightning 导入数据的问题
      • 修复使用 0.0.0.0advertise-status-addr 异常的问题 #9036
      • 修复当事务删除 key 时却报 key 已存在的问题
      • 修复 RocksDB cache 映射错误导致的数据错误问题 #9029
      • 修复当 Leader 切换时 Follower Read 可能返回旧数据的问题
      • 修复悲观锁下可能读到旧值的问题 #9282
      • 修复 transfer leader 后 replica read 可能会读到旧值的问题
      • 修复 TiKV 在 profiling 结束后再收到 SIGPROF 会 panic 的问题 #9229
    • PD

      • 修复在特殊情况下 Placement Rule 指定的 leader 绑定不生效的问题
      • 修复 trace-region-flow 在配置更新时被置为 false 的问题 #3120
      • 修复特殊情况下 safepoint 有无限 TTL 的问题
    • TiDB Dashboard

      • 修复部分时间显示混杂中英文的问题 #755
      • 修复部分不兼容的浏览器中没有提示不兼容的问题
      • 修复部分情况下事务时间戳显示不正确的问题 #793
      • 修复部分 SQL 文本格式化后成为无效 SQL 语句的问题
    • TiFlash

      • 修复 INFORMATION_SCHEMA.CLUSTER_HARDWARE 中可能包含未被使用的硬盘信息的问题
      • 修复 Delta cache 内存占用量估算偏少的问题
      • 修复由线程统计信息引起的内存泄露问题
    • Tools

      • Backup & Restore (BR)

        • 修复因 S3 secret access keys 中存在特殊字符而导致失败的问题 #617
      • TiCDC

        • 修复某些异常情况下存在多个 Owner 的问题
        • 修复在 TiKV 节点意外退出或重启恢复情况下 TiCDC 不能正常同步的问题,该 bug 在 v4.0.8 引入 #1198
        • 修复在表初始化过程中会向 etcd 中重复写入元数据的问题
        • 修复 schema storage 缓存 TiDB 表信息的过程中因更新表信息延迟或过早 GC 导致同步中断的问题 #1114
        • 修复 schema storage 在 DDL 频繁的情况下会消耗过多内存的问题
        • 修复在同步任务暂停或取消之后会产生 goroutine 泄露的问题 #1075
        • 增加 Kafka producer 最大重试时间到 600s,避免在下游 Kafka 服务或网络抖动情况下同步中断
        • 修复 Kafka 消息所包含行变更数量不能正常生效的问题 #1112
        • 修复当 TiCDC 与 PD 间网络出现抖动,并且同时操作 TiCDC changefeed 暂停和恢复,可能会出现部分表数据没有被同步的问题
        • 修复 TiCDC 与 PD 网络不稳定情况下 TiCDC 可能出现进程非预期退出的问题 #1218
        • 在 TiCDC 内部使用全局 PD client,以及修复 PD client 被错误关闭导致同步阻塞的问题
        • 修复 TiCDC owner 节点可能在 etcd watch client 里消耗过多内存的问题 #1224
      • Dumpling

        • 修复在某些情况下 MySQL 链接关闭导致 Dumpling 卡住的问题
      • TiDB Lightning

        • 修复使用错误信息编码 key 的问题 #437
        • 修复手动关闭时可能出现的 panic 问题