TiDB 3.0.0-rc.2 Release Notes

发版日期:2019 年 5 月 28 日

TiDB 版本:3.0.0-rc.2

TiDB Ansible 版本:3.0.0-rc.2

Overview

2019 年 5 月 28 日,TiDB 发布 3.0.0-rc.2 版本,对应的 TiDB Ansible 版本为 3.0.0-rc.2。相比 3.0.0-rc.1 版本,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎做了很多改进。

TiDB

  • SQL 优化器

    • 在更多的场景中支持 Index Join #10540
    • 支持导出历史统计信息 #10291
    • 支持对单调递增的索引列增量 Analyze #10355
    • 忽略 Order By 子句中的 NULL 值 #10488
    • 修复精简列信息时逻辑算子 UnionAll 的 Schema 信息的计算不正确的问题 #10384
    • 下推 Not 操作符时避免修改原表达式 #10363
    • 支持导入导出列的关联性信息 #10573
  • 执行引擎

    • 有唯一索引的虚拟生成列可以在 replace on duplicate key update/insert on duplicate key update 语句中被正确地处理 #10370
    • 修复 CHAR 列上的扫描范围计算 #10124
    • 修复 PointGet 处理负数不正确问题 #10113
    • 合并具有相同窗口名的窗口函数,提高执行效率 #9866
    • 窗口函数中 Range Frame 可以无需 Order By 子句 #10496
  • Server

    • 修复 TiKV 故障时,TiDB 不断创建与 TiKV 的新连接的问题 #10301
    • tidb_disable_txn_auto_retry 不再只影响写入冲突错误,而是影响所有的可重试错误 #10339
    • 不带参数的 DDL 语句可以通过 prepare/execute 来执行 #10144
    • 新增 tidb_back_off_weight 变量,控制 TiDB 内部 back off 时间的长短 #10266
    • tidb_disable_txn_auto_retry 的默认值改为 on,即默认情况下,TiDB 不会重试非自动提交的事务 #10266
    • 修复 RBAC 中对 role 的数据库权限的判断不正确的问题 #10261
    • 支持悲观事务模型(实验性)#10297
    • 降低某些情况下处理锁冲突时的等待时间 #10006
    • 重构 Region cache,增加在 Region 故障时的轮询逻辑 #10256
    • 新增 tidb_low_resolution_tso 变量,控制批量获取 tso 个数,减少事务获取 tso 的次数,以适应某些数据一致性要求较低的场景 #10428
  • DDL

    • 修复旧版本的 TiDB 存储的字符集名称大写的问题 #10272
    • 支持 table partition 预分裂 Region 功能,该选项可以在建表时预先分配 table Region,避免建表后大量写入造成的写热点 #10221
    • 修复某些情况下 TiDB 更新版本信息到 PD 不准确的问题 #10324
    • 支持通过 alter schema 语句修改数据库 charset 和 collation #10393
    • 支持通过语句按指定表的索引及范围分裂 Region,用于缓解热点问题 #10203
    • 禁止 alter table 语句修改 decimal 列的精度 #10433
    • 修复 hash partition 中对表达式和函数的约束 #10273
    • 修复某些情况下对含有 partition 的 table 添加索引时引发 TiDB panic 的问题 #10475
    • 添加对某些极端情况下导致 schema 出错的防护功能 #10464
    • 创建 range partition 若有单列或者创建 hash partition 时默认开启分区功能 #9936

PD

  • 默认开启 Region storage 将 Region 元信息存储到 Region storage 中 #1524
  • 修复热点调度受其他调度器抢占的问题 #1522
  • 修复 Leader 优先级不生效的问题 #1533
  • 新增 ScanRegions 的 gRPC 接口 #1535
  • 主动下发 operator 加快调度速度 #1536
  • 添加 store limit 机制,限制单个 store 的调度速度 #1474
  • 修复 config 状态不一致的问题 #1476

TiKV

  • Engine
    • 支持多个 column family 共享 block cache #4563
  • Server
    • 移除 txn scheduler #4098
    • 支持悲观锁事务 #4698
  • Raftstore
    • 新增 hibernate Regions 特性,减少 raftstore CPU 的消耗 #4591
    • 移除 local reader 线程 #4558
    • 修复 Leader 不回复 Learner ReadIndex 请求的问题 #4653
    • 修复在某些情况下 transfer leader 失败的问题 #4684
    • 修复在某些情况下可能发生的脏读问题 #4688
    • 修复在某些情况下 snapshot 少包含数据的问题 #4716
  • Coprocessor
    • 新增更多的 RPN 函数

Tools

  • TiDB Binlog

    • Drainer 增加下游同步延迟监控项 checkpoint_delay #594
  • TiDB Lightning

    • 支持数据库合并,数据表合并同步功能 #95
    • 新增 KV 写入失败重试机制 #176
    • 配置项 table-concurrency 默认值修改为 6 #175
    • 减少必要的配置项,tidb.porttidb..pd-addr 支持自动获取 #173