title: TiDB 3.0.0-rc.3 Release Notescategory: Releases

TiDB 3.0.0-rc.3 Release Notes

发版日期:2019 年 6 月 21 日

TiDB 版本:3.0.0-rc.3

TiDB Ansible 版本:3.0.0-rc.3

Overview

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

TiDB

  • SQL 优化器

    • 删除收集虚拟生成列的统计信息功能 #10629
    • 修复点查时主键常量溢出的问题 #10699
    • 修复 fast analyze 因使用未初始化的信息导致 panic #10691
    • 修复 prepare create view 语句执行过程中因列信息错误导致执行失败的问题 #10713
    • 修复在处理 window function 时列信息未拷贝的问题 #10720
    • 修复 index join 中内表过滤条件在某些情况下的选择率估计错误的问题 #10854
    • 新增变量 stats-lease 值为 0 时系统自动加载统计数据功能 #10811
  • 执行引擎

    • 修复在 StreamAggExec 调用 Close 函数资源未正确释放问题 #10636
    • 修复对分区表执行 show create table 结果中 table_optionpartition_options 顺序不正确问题 #10689
    • 通过支持逆序扫数据提升 admin show ddl jobs 的性能 #10687
    • 修复 RBAC 中对 show grants 语句带 current_user 字段时结果与 MySQL 不兼容的问题 #10684
    • 修复 UUID 在多节点上可能生成重复值的问题 #10712
    • 修复 explain 没考虑 show view 权限的问题 #10635
    • 新增 split table region 语句,手动分裂表的 Region,缓解热点问题 #10765
    • 新增 split index region 语句,手动分裂索引的 region 缓解热点问题 #10764
    • 修复连续执行多个 create usergrantrevoke 等类似语句执行不正确的问题 #10737
    • 新增黑名单禁止下推表达式到 coprocessor 功能 #10791
    • 新增查询超出内存配置限制时打印 expensive query 日志的功能 #10849
    • 新增 bind-info-lease 配置项控制修改绑定执行计划的更新时间 #10727
    • 修复因持有 execdetails.ExecDetails 指针时 Coprocessor 的资源无法快速释放导致的在大并发场景下 OOM 的问题 #10832
    • 修复某些情况下 kill 语句导致的 panic 问题 #10876
  • Server

    • 修复 GC 时可能发生的 goroutine 泄露问题 #10683
    • 支持 slow query 里面显示 host 信息 #10693
    • 支持循环利用与 TiKV 交互的空闲链接 #10632
    • 修复 RBAC 对开启 skip-grant-table 选项的支持问题 #10738
    • 修复 pessimistic-txn 配置失效的问题 #10825
    • 修复主动取消的 ticlient 请求还会被重试的问题 #10850
    • 提高在悲观事务和乐观事务冲突情况下的性能 #10881
  • DDL

    • 修复在使用 alter table 修改 charset 时导致 blob 类型改变的问题 #10698
    • 新增列属性包含 AUTO_INCREMENT 时利用 SHARD_ROW_ID_BITS 打散行 ID 功能,缓解热点问题 #10794
    • 禁止通过 alter table 添加存储的生成列 #10808
    • 优化无效 DDL 元信息存活时间,使集群升级后一段时间 DDL 操作比较慢的情况变短 #10795

PD

  • 新增 enable-two-way-merge 配置项,控制合并时仅允许单向合并 #1583
  • 新增 AddLightLearnerAddLightPeer 的调度操作,Region Scatter 调度不受 limit 机制限 #1563
  • 修复系统启动时因数据可能只进行一副本复制而导致可靠性不足的问题 #1581
  • 优化配置检查逻辑,防止配置项错误 #1585
  • 调整 store-balance-rate 配置的定义为每分钟产生 balance operator 数量的上限 #1591
  • 修复 store 可能一直无法产生调度操作的问题 #1590

TiKV

  • Engine

    • 修复因迭代器未检查状态导致系统生成残缺 snapshot 的问题 #4936
    • 修复在机器异常掉电时由于接收 snapshot 未及时将数据刷新到磁盘导致丢数据的问题 #4937
  • Server

    • 新增检查 block-size 配置的有效性功能 #4928
    • 新增 read index 相关监控项 #4830
    • 新增 GC worker 相关监控项 #4922
  • Raftstore

    • 修复 local reader 的 cache 没有正确清理的问题 #4778
    • 修复进行 transfer leader 和 conf change 时可能导致请求延迟增加的问题 #4734
    • 修复误报 stale command 的问题 #4682
    • 修复 command 可能一直 pending 的问题 #4810
    • 修复 snapshot 文件未及时落盘而导致掉电后文件损坏的问题 #4807#4850
  • Coprocessor

    • 向量计算支持 Top-N #4827
    • 向量计算支持 Stream 聚合 #4786
    • 向量计算中支持 AVG 聚合函 #4777
    • 向量计算中支持 First 聚合函数 #4771
    • 向量计算中支持 SUM 聚合函数 #4797
    • 向量计算中支持 MAX/MIN 聚合函数 #4837
    • 向量计算中支持 Like 表达式 #4747
    • 向量计算中支持 MultiplyDecimal 表达式 #4849
    • 向量计算中支持 BitAnd/BitOr/BitXor 表达式 #4724
    • 向量计算中支持 UnaryNot 表达式 #4808
  • Transaction

    • 修复悲观事务中非悲观锁冲突导致出错的问题 #4801#4883
    • 减少在开启悲观事务后乐观事务的无用计算,提高性能 #4813
    • 新增单语句 rollback,保证在当前语句发生死锁时不需要 rollback 整个事务 #4848
    • 新增悲观事务相关监控项 #4852
    • 支持 ResolveLockLite 命令用于轻量级清锁以优化在冲突严重时的性能 #4882
  • tikv-ctl

    • 新增 bad-regions 命令支持检测更多的异常情况 #4862
    • tombstone 命令新增强制执行功能 #4862
  • Misc

    • 新增 dist_release 编译命令 #4841

Tools

  • TiDB Binlog
    • 修复 Pump 因写入失败时未检查返回值导致偏移量错误的问题 #640
    • Drainer 新增 advertise-addr 配置,支持容器环境中使用桥接模式 #634
    • Pump 新增 GetMvccByEncodeKey 函数,加快事务状态查询 #632

TiDB Ansible

  • 新增预测集群最大 QPS 的监控项(默认隐藏)#f5cfa4d