TiDB 4.0 RC.2 Release Notes

    发版日期:2020 年 5 月 15 日

    TiDB 版本:4.0.0-rc.2

    • TiDB

      • 去掉了特别为开启 Binlog 时定义的事务容量上限 (100 MB),现在事务的容量上限统一为 10 GB,但若开启 Binlog 且下游是 Kafka,由于 Kafka 消息大小的限制是 1 GB,请根据情况调整 配置参数 #16941
      • 查询 CLUSTER_LOG 表时,如果未指定时间范围,由默认时间范围变更为返回错误且用户必须指定时间范围
      • CREATE TABLE 创建分区表时指定未支持的 sub-partition 或 linear hash 选项,将会创建非分区普通表,而不是选项未生效的分区表 #17197
    • TiKV

      • 将加密相关的配置移到 security 分类下,即调整配置项 [encryption][security.encryption]
    • Tools

      • TiDB Lightning

        • 导入数据时将 SQL Mode 由默认改成 ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,提高兼容性 #316
        • 在 tidb-backend 模式下禁止访问 PD 或者 TiKV 端口
        • 日志信息默认输出到 tmp 文件且在启动时输出 tmp 文件的路径 #313
    • TiDB

      • 修复当 WHERE 语句只有一个等值条件时错误选择分区表分区的问题
      • 修复当 WHERE 语句只包含字符串列时构造错误的 Index Range 导致结果错误的问题 #16660
      • 修复事务中执行 DELETE 之后再进行唯一索引点查语句 Panic 的问题
      • 修复 GC worker 在有错误发生时可能死锁的问题 #16915
      • 避免 TiKV 未宕机仅响应慢情况下的无故 RegionMiss 重试
      • 修改客户端 MySQL 协议握手阶段日志级别为 DEBUG,以解决干扰日志输出的问题 #16881
      • 修复 TRUNCATE 后未按照表定义的 PRE_SPLIT_REGIONS 信息进行预切分 Region 的问题
      • 修复两阶段提交中第二阶段遇到 TiKV 不可用重试导致的 Goroutine 暴涨的问题 #16876
      • 修复部分表达式不能下推可能导致语句执行 Panic 的问题
      • 修复 IndexMerge 在分区表上执行结果错误的问题 #17124
      • 修复因 Memory Tracker 锁竞争引起的宽表性能回退问题
      • 修复库名、表名含特殊字符,系统升级后无法正常启动的问题
    • TiDB

      • 新增 BACKUPRESTORE 语句进行备份与恢复 #16960
      • 支持在提交前预检查单个 Region 提交数据量,并在超过阈值时预切分 Region 后再进行提交
      • 新增 Session 作用域变量 LAST_PLAN_FROM_CACHE,用于指示上一条语句是否命中 Plan Cache #16830
      • 支持在慢日志和 SLOW_LOG 表中记录 Cop_time 信息
      • 支持在 Grafana 中展示更多 Go Runtime 内存监控指标 #16928
      • 支持在 General Log 中输出 forUpdateTSRead Consistency 隔离级别信息
      • 支持对 TiKV Region Resolve Lock 请求进行去重 #16925
      • 支持 SET CONFIG 语句进行 PD/TiKV 节点配置修改
      • 支持在 CREATE TABLE 语句中指定 auto_random 选项 #16813
      • 通过为 DistSQL 请求分配 TaskID 让 TiKV 更好地调度处理请求
      • 支持在 MySQL 客户端登录后显示 TiDB server 版本信息 #17187
      • 支持在 GROUP_CONCAT 中指定 ORDER BY 子句
      • 支持在 Slow Log 中展示 信息,用于指示语句是否命中 Plan Cache #17121
      • Dashboard 支持显示 TiFlash 多盘部署容量信息功能
      • Dashboard 支持通过 SQL 查询 TiFlash 日志的功能
    • TiKV

      • 新增加密码 Snapshot 中的 lock column famliy 的功能
      • 修改 Raftstore latency 在 Grafana 面板显示方式,采用 heatmap 方便诊断性能抖动问题 #7717
      • 支持配置 gRPC 消息大小的上限
      • Grafana 面板中添加了 encryption 相关的监控 #7827
      • TiKV 支持 ALPN 协议
      • 添加了更多的关于 Titan 的统计信息 #7818
      • 统一线程池支持用客户端提供的 task ID 来区分任务,以避免一个请求被来自同一个事务的另一个请求降低优先级
      • 提升了 batch insert 请求的性能 #7718
    • PD

      • 下线节点时放开 Remove peer 的速度
    • TiFlash

      • 调整 Grafana 中 Read Index 的 Count 图表的名称为 Ops
      • 优化系统负载较低时打开文件描述符的数据,降低系统资源占用量
      • 新增 capacity 配置参数用于限制存储数据容量
    • Tools

      • TiDB Lightning

        • tidb-lightning-ctl 新增 fetch-mode 子命令,输出 TiKV 集群模式 #287
      • TiCDC

        • 支持通过 cdc cli 来管理同步任务 (changefeed)
        • 支持备份时候自动调整 GC 时间 #257
        • 优化恢复数据时的 PD 参数,以加速恢复
    • TiDB

      • 完善多个算子中判断是否使用向量化进行表达式执行的逻辑 #16383
      • 修复 IndexMerge Hint 未能正确检查数据库名称的问题
      • 修复 Sequence 可以被 TRUNCATE 的问题 #17037
      • 修复 Sequence 可以被 INSERT/UPDATE/ANALYZE/DELETE 的问题
      • 修复启动阶段执行的内部 SQL 在 Statement Summary 表中未能正确记录为内部 SQL 的问题 #17062
      • 修复因 TiFlash 支持但 TiKV 不支持的过滤条件仅被下推到 IndexLookupJoin 算子之下导致的语句报错问题
      • 修复开启 Collation 后,LIKE 表达式可能出现的并发问题 #16997
      • 修复开启 Collation 后,LIKE 函数无法正确构造 Range 查询索引的问题
      • 修复触发填充 Plan Cache 语句后执行 @@LAST_PLAN_FROM_CACHE 返回值错误的问题 #16831
      • 修复为 IndexMerge 计算候选路径时漏掉 Index 上的 TableFilter 的问题
      • 修复使用 MergeJoin Hint 并存在 TableDual 算子时无法产生物理查询计划的问题 #17016
      • 修复 Statement Summary 表的 Stmt_Type 列值大小写错误的问题
      • 修复因不同用户使用相同的 tmp-storage-path 导致服务无法启动报 Permission Denied 错误问题 #16996
      • 修复返回结果类型由多个输入列决定的表达式(例如:CASE WHEN)结果类型 NotNullFlag 标识推导不正确的问题
      • 修复 Green GC 在有 Dirty Store 的情况下可能遗留锁的问题 #16949
      • 修复 Green GC 在遇到单个 key 有多个不同锁的情况下会遗留下锁的问题
      • 修复 INSERT VALUE 中子查询引用父查询列导致插入值错误的问题 #16952
      • 修复对 Float 值进行 AND 操作结果不正的问题
      • 修复 Expensive Log 日志中 WAIT_TIME 字段信息错误的问题 #16907
      • 修复悲观事务模式执行语句 SELECT FOR UPDATE 不能被记录到 Slow Log 的问题
      • 修复在 EnumSet 类型列上执行 SELECT DISTINCT 时结果错误的问题 #16892
      • 修复 在 SHOW CREATE TABLE 的显示问题
      • 修复 WHERE string_value 结果不正确的问题 #16559
      • 修复 FLASH TABLE 语句在数据库名有大写字母时执行失败的问题
      • 修复 Projection 执行器内存消耗记录不准确的问题 #17118
      • 修复 SLOW_QUERY 表在不同时区下时间过滤不正确的问题
      • 修复 IndexMerge 和虚拟生成列一起使用时 Panic 的问题 #17126
      • 修复 INSTRLOCATE 函数大小写问题
      • 修复开启 tidb_allow_batch_cop 配置后频繁出现 tikv server timeout 错误的问题 #17161
      • 修复 Float 类型进行 XOR 操作结果和 MySQL 8.0 不一致的问题
      • 修复 ALTER TABLE REORGANIZE PARTITION 不支持但执行未报错的问题 #17178
      • 修复 EXPLAIN FORMAT="dot" FOR CONNECTION ID 可能遇到不支持展示的 Plan 发生报错的问题
      • 修复 Prepared Statement 在 Statement Summary 表中 EXEC_COUNT 列的记录问题 #17086
      • 修复设置 Statement Summary 系统变量时未检查值是否合法的问题
      • 修复启用 Plan Cache 时使用越界值查询 UNSIGNED BIGINT 主键报错的问题 #17120
      • 修复 Grafana TiDB Summary 面板基于机器实例和请求类型展示 QPS 不正确的问题
    • TiKV

      • 修复 restore 后生成大量空 Region 的问题 #7632
      • 修复 Raftstore 收到乱序 read index 响应时会引发 panic 的问题
      • 修复启用统一线程池时,不会验证 storage 或 coprocessor read pool 配置是否无效的问题 #7513
      • 修复 TiKV server 关闭时,join 可能 panic 的问题
      • 修复通过诊断 API 搜索慢日志无返回结果的问题 #7776
      • 修复节点长时间运行时,系统会产生较多内存碎片的问题
      • 修复部分情况下因存储无效日期导致 SQL 执行失败的问题 #7268
      • 修复从 GCS 进行恢复数据不能正确运行的问题
      • 修复存储加密时未进行 KMS Key Id 验证的问题 #7719
      • 修复 Coprocessor 在不同架构编译器下潜在正确性问题 #7730
      • 修复启用加密时出现 snapshot ingestion 错误的问题
      • 修复当改写配置文件时发生 Invalid cross-device link 的问题 #7817
      • 修复将配置文件写入到空文件中时会出现错误的 toml 格式的问题
      • 修复 Raftstore 中已销毁的 Peer 仍然可能处理请求的问题 #7836
    • PD

      • 修复 pd-ctl 中使用 region key 命令时发生 404 错误的问题
      • 修复 Grafana 面板中缺失关于 TSO 和 ID 分配的监控的问题 #2405
      • 修复 Docker 镜像中不包含 pd-recover 的问题
      • 将数据目录的路径解析为绝对路径以解决 TiDB Dashboard 可能不能正确显示 PD 信息的问题 #2420
      • 修复在 pd-ctl 中使用 scheduler config shuffle-region-scheduler 命令时没有默认输出的问题
    • TiFlash

      • 修复部分场景错误上报已使用空间信息的问题
    • Tools

      • TiDB Binlog

        • 修复当下游为 Kafka 时对 mediumint 类型数据未处理的问题 #962
        • 修复当 DDL 中库名为关键字时 reparo 解析失败的问题
      • TiCDC

        • 修复当环境变量 TZ 未设置时使用错误时区的问题 #512
        • 修复 owner 因为部分错误没有正确处理导致 server 退出时没有清理资源的问题
        • 修复重连 TiKV 可能导致 TiCDC 阻塞的问题 #531
        • 优化初始化表结构时的内存使用
        • 使用 watch 模式监听同步状态变更并进行准实时更新,减少同步延迟 #481