TiDB 3.0.1 Release Notes

发版日期:2019 年 7 月 16 日

TiDB 版本:3.0.1

TiDB Ansible 版本:3.0.1

TiDB

  • 新增对 MAX_EXECUTION_TIME 特性的支持 #11026
  • 新增 tidb_wait_split_region_finish_backoff Session 变量,用于控制 Region 打散的 Backoff 时间 #11166
  • 新增根据负载情况自动调整 Auto ID 分配的步长功能,步长自动调整范围最小 1000,最大 2000000 #11006
  • 新增 ADMIN PLUGINS ENABLE/ADMIN PLUGINS DISABLE SQL 语句,管理 Plugin 的动态开启或关闭 #11157
  • Audit Plugin 新增审记连接功能 #11013
  • 修改 Region 打散时的默认行为为等待 PD 调度完成 #11166
  • 禁止 Window Function 在 Prepare Plan Cache 中被缓存,避免某些情况下出现结果不正确的问题 #11048
  • 禁止使用 Alter 语句修改 Stored Generated Column 的定义 #11068
  • 禁止将 Virtual Generated Column 更改为 Stored Generated Column #11068
  • 禁止改变带有索引的 Generated Column 的表达式 #11068
  • 支持 TiDB 在 ARM64 架构下的编译 #11150
  • 支持修改 Database/Table 的 Collate,条件限制为 Database/Table 字符集必须是 UTF8/UTF8MB4 #11086
  • 修复 UPDATE … SELECT 语句中,SELECT 子查询没有解析到 UPDATE 表达式中的列而被误裁剪,导致报错的问题 #11252
  • 修复点查时,某列被查询多次而且结果为 NULL 时会 Panic 的问题 #11226
  • 修复 RAND 函数由于非线程安全的 rand.Rand 导致的 Data Race 问题 #11169
  • 修复 oom-action="cancel" 时,某些情况下 SQL 内存使用超阈值没有被取消执行,返回结果不正确的问题 #11004
  • 修复 MemTracker 未正确清理统计的内存使用值导致 SHOW PROCESSLIST 显示内存使用不为 0 的问题 #10970
  • 修复某些情况下整数和非整数比较结果不正确的问题 #11194
  • 修复在显式事务中查询对 Table Partition 的查询包含谓词时,查询结果不正确的问题 #11196
  • 修复 DDL Job 由于 infoHandle 可能为 NULL 导致 Panic 的问题 #11022
  • 修复嵌套聚合查询时,由于被查询列在子查询中没有引用而被误裁剪导致查询结果错误的问题 #11020
  • 修复 Sleep 函数响应 Kill 命令不及时的问题 #11028
  • 修复 SHOW PROCESSLIST 命令显示的 DBINFO 列与 MySQL 不兼容的问题 #11003
  • 修复 skip-grant-table=true 时,FLUSH PRIVILEGES 语句导致系统 Panic 的问题 #11027
  • 修复表主键为 UNSIGNED 整数时,FAST ANALYZE 收集主键的统计信息不正确的问题 #11099
  • 修复某些情况下 FAST ANALYZE 语句报 “invalid key” Error 的问题 #11098
  • 修复 CURRENT_TIMESTAMP 作为列的默认值且指定浮点精度时,SHOW CREATE TABLE 等语句显示精度不完整的问题 #11088
  • 修复窗口函数报错时函数名没有小写的问题,兼容 MySQL #11118
  • 修复 TiKV Client Batch gRPC 的后台线程 panic 后导致 TiDB 无法正常连接 TiKV 进而无法提供服务的问题 #11101
  • 修复 SetVar 方法由于字符串浅拷贝导致设置的变量不正确的问题 #11044
  • 修复 INSERT … ON DUPLICATE 语句作用在 Table Partition 时执行失败报错的问题 #11231
  • 悲观锁(实验性特性)
    • 修复悲观锁进行点查且数据为空时,由于行锁未生效导致结果不正确的问题 #10976
    • 修复使用悲观锁查询时由于没有使用 SELECT … FOR UPDATE 的 TSO 导致查询结果不正确的问题 #11015
    • 修改乐观锁与悲观锁同时使用时,乐观事务遇到悲观锁冲突时,检测行为由立即检测冲突修改为等待,防止锁冲突进一步恶化 #11051

TiKV

  • 统计信息中新增对 Blob 文件大小的统计 #5060
  • 修复由于进程退出未正确清理内存资源导致进程在退出时 core dump 问题 #5053
  • 新增与 Titan 引擎相关的所有监控指标 #4772#4836
  • 统计打开文件句柄数量时,新增 Titan 引擎打开文件句柄数量,防止因文件句柄数统计不准确导致系统无文件句柄可用的问题 #5026
  • 通过设置 blob_run_mode 来决定是否在某个 CF 上启动 Titan 引擎 #4991
  • 修复读操作读不到悲观事务 commit 信息的问题 #5067
  • 新增 blob-run-mode 配置参数控制 Titan 引擎的运行模式,取值:normal、read-only、fallback #4865
  • 提升死锁检测的性能 #5089

PD

  • 修复热点 Region 调度时,调度限制会自动调整为 0 的问题 #1552
  • 新增 enable-grpc-gateway 的配置选项,用于开启 etcd 的 grpc gateway 功能 #1596
  • 新增 store-balance-ratehot-region-schedule-limit 等与调度器配置相关的统计信息 #1601
  • 优化热点 Region 调度策略,调度时跳过缺失副本的 Region,防止多个副本调度到同一个机房 #1609
  • 优化 Region Merge 处理逻辑,优先 Merge Region Size 较小的 Region,提升 Region Merge 的速度 #1613
  • 优化单次调度热点 Region 的限制值为 64,防止调度任务过多占用系统资源,影响性能 #1616
  • 优化 Region 调度策略,新增优先调度 Pending 状态的 Region 功能 #1617
  • 修复无法添加 random-mergeadmin-merge-region operator 的问题 #1634
  • 调整日志中输出 Region 中 Key 的格式为 16 进制,方便用户查看 #1639

Tools

TiDB Binlog

  • 优化 Pump GC 策略,删除保证未被消费的 Binlog 不被清理的限制,确保资源不会长期占用 #646

TiDB Lightning

  • 修正 SQL dump 指明的列名不是小写时导入错误的问题 #210

TiDB Ansible

  • 新增 ansible 命令及其 jmespathJinja2 依赖包的预检查功能 #803#813
  • Pump 新增 stop-write-at-available-space 参数,控制当磁盘剩余空间小于该值(默认 10 GiB)时,Pump 停止写入 Binlog #806
  • 更新 TiKV 监控中的 IO 监控项,兼容新版本监控组件 #820
  • 更新 PD 监控信息,并修复 Disk Performance Dashboard 中 Disk Latency 显示为空的异常 #817
  • TiKV Details Dashboard 新增 Titan 监控项 #824