• aliases: [‘/docs-cn/releases/21rc1/‘]
  • TiDB 2.1 RC1 Release Notes
    • TiDB
    • PD
    • TiKV

    title: TiDB 2.1 RC1 Release Notescategory: Releases

    aliases: [‘/docs-cn/releases/21rc1/‘]

    TiDB 2.1 RC1 Release Notes

    2018 年 8 月 24 日,TiDB 发布 2.1 RC1 版。相比 2.1 Beta 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。

    TiDB

    • SQL 优化器
      • 修复某些情况下关联子查询去关联后结果不正确的问题 #6972
      • 优化 Explain 输出结果 #7011#7041
      • 优化 IndexJoin 驱动表选择策略#7019
      • 去掉非 PREPARE 语句的 Plan Cache #7040
      • 修复某些情况下 INSERT 语句无法正常解析执行的问题 #7068
      • 修复某些情况下 IndexJoin 结果不正确的问题 #7150
      • 修复某些情况下使用唯一索引不能查询到 NULL 值的问题 #7163
      • 修复 UTF-8 编码情况下前缀索引的范围计算不正确的问题 #7194
      • 修复某些情况下 Project 算子消除导致的结果不正确的问题 #7257
      • 修复主键为整数类型时无法使用 USE INDEX(PRIMARY) 的问题 #7316
      • 修复某些情况下使用关联列无法计算索引范围的问题 #7357
    • SQL 执行引擎
      • 修复某些情况下夏令时时间计算结果不正确的问题 #6823
      • 重构聚合函数框架,提升 StreamHash 聚合算子的执行效率 #6852
      • 修复某些情况下 Hash 聚合算子不能正常退出的问题 #6982
      • 修复 BIT_AND/BIT_OR/BIT_XOR 没有正确处理非整型数据的问题 #6994
      • 优化 REPLACE INTO 语句的执行速度,性能提升近 10 倍 #7027
      • 优化时间类型的内存占用,时间类型数据的内存使用降低为原来的一半 #7043
      • 修复 UNION 语句整合有符号和无符号型整数结果时与 MySQL 不兼容的问题 #7112
      • 修复 LPAD/RPAD/TO_BASE64/FROM_BASE64/REPEAT 因为申请过多内存导致 TiDB panic 的问题 #7171 #7266 #7409 #7431
      • 修复 MergeJoin/IndexJoin 在处理 NULL 值时结果不正确的问题 #7255
      • 修复某些情况下 Outer Join 结果不正确的问题 #7288
      • 增强 Data Truncated 的报错信息,便于定位出错的数据和表中对应的字段 #7401
      • 修复某些情况下 Decimal 计算结果不正确的问题 #7001 #7113 #7202 #7208
      • 优化点查的查询性能 #6937
      • 禁用 Read Committed 隔离级别,避免潜在的问题 #7211
      • 修复某些情况下 LTRIM/RTRIM/TRIM 结果不正确的问题 #7291
      • 修复 MaxOneRow 算子无法保证返回结果不超过 1 行的问题 #7375
      • 拆分 range 个数过多的 Coprocessor 请求 #7454
    • 统计信息
      • 优化统计信息动态收集机制 #6796
      • 解决数据频繁更新场景下 Auto Analyze 不工作的问题 #7022
      • 减少统计信息动态更新过程中的写入冲突 #7124
      • 优化统计信息不准确情况下的代价估算 #7175
      • 优化 AccessPath 的代价估算策略 #7233
    • Server
      • 修复加载权限信息时的 bug #6976
      • 修复 Kill 命令对权限的检查过严问题 #6954
      • 解决 Binary 协议中某些数值类型移除的问题 #6922
      • 精简日志输出 #7029
      • 处理 mismatchClusterID 问题 #7053
      • 增加 advertise-address 配置项 #7078
      • 增加 GrpcKeepAlive 选项 #7100
      • 增加连接或者 Token 时间监控 #7110
      • 优化数据解码性能 #7149
      • INFORMMATION_SCHEMA 中增加 PROCESSLIST 表 #7236
      • 解决权限验证时多条规则可以命中情况下的顺序问题 #7211
      • 将部分编码相关的系统变量默认值改为 UTF-8 #7198
      • 慢查询日志显示更详细的信息 #7302
      • 支持在 PD 注册 tidb-server 的相关信息并通过 HTTP API 获取 #7082
    • 兼容性
      • 支持 Session 变量 warning_counterror_count #6945
      • 读取系统变量时增加 Scope 检查 #6958
      • 支持 MAX_EXECUTION_TIME 语法 #7012
      • 支持更多的 SET 语法 #7020
      • Set 系统变量值过程中增加合法性校验 #7117
      • 增加 Prepare 语句中 PlaceHolder 数量的校验 #7162
      • 支持 set character_set_results = null #7353
      • 支持 flush status 语法 #7369
      • 修复 SETENUM 类型在 information_schema 里的 column size #7347
      • 支持建表语句里的 NATIONAL CHARACTER 语法 #7378
      • 支持 LOAD DATA 语句的 CHARACTER SET 语法 #7391
      • 修复 SETENUM类型的 column info #7417
      • 支持 CREATE USER 语句的 IDENTIFIED WITH 语法 #7402
      • 修复 TIMESTAMP 类型计算过程中丢失精度的问题 #7418
      • 支持更多 SYSTEM 变量的合法性验证 #7196
      • 修复 CHAR_LENGTH 函数在计算 binary string 时结果不正确的问题 #7410
      • 修复在包含 GROUP BY 的语句里 CONCAT 结果不正确的问题 #7448
      • 修复 DECIMAL 类型 CAST 到 STRING 类型时,类型长度不准确的问题 #7451
    • DML
      • 解决 Load Data 语句的稳定性 #6927
      • 解决一些 Batch 操作情况下的内存使用问题 #7086
      • 提升 Replace Into 语句的性能 #7027
      • 修复写入 CURRENT_TIMESTAMP 时,精度不一致的问题 #7355
    • DDL
      • 改进 DDL 判断 Schema 是否已经同步的方法, 避免某些情况下的误判 #7319
      • 修复在 ADD INDEX 过程中的 SHOW CREATE TABLE 结果 #6993
      • 非严格 sql-mode 模式下, text/blob/json 的默认值可以为空 #7230
      • 修复某些特定场景下 ADD INDEX 的问题 #7142
      • 大幅度提升添加 UNIQUE-KEY 索引操作的速度 #7132
      • 修复 Prefix-index 在 UTF-8 字符集的场景下的截断问题 #7109
      • 增加环境变量 tidb_ddl_reorg_priority 来控制 add-index 操作的优先级 #7116
      • 修复 information_schema.tablesAUTO-INCREMENT 的显示问题 #7037
      • 支持 admin show ddl jobs <number> 命令, 支持输出 number 个 DDL jobs #7028
      • 支持并行 DDL 任务执行 #6955
    • Table Partition(实验性)
      • 支持一级分区
      • 支持 Range Partition

    PD

    • 新特性
      • 引入版本控制机制,支持集群滚动兼容升级
      • 开启 Region merge 功能
      • 支持 GetPrevRegion 接口
      • 支持批量 split Region
      • 支持存储 GC safepoint
    • 功能改进
      • 优化系统时间回退影响 TSO 分配的问题
      • 优化处理 Region heartbeat 的性能
      • 优化 Region tree 性能
      • 优化计算热点统计的性能问题
      • 优化 API 接口错误码返回
      • 新增一些控制调度策略的开关
      • 禁止在 label 中使用特殊字符
      • 完善调度模拟器
      • pd-ctl 支持使用统计信息进行 Region split
      • pd-ctl 支持调用 jq 来格式化 JSON 输出
      • 新增 etcd Raft 状态机相关 metrics
    • Bug 修复
      • 修复 leader 切换后 namespace 未重新加载的问题
      • 修复 namespace 调度超出 schedule limit 配置的问题
      • 修复热点调度超出 schedule limit 的问题
      • 修复 PD client 关闭时输出一些错误日志的问题
      • 修复 Region 心跳延迟统计有误的问题

    TiKV

    • 新特性
      • 支持 batch split,防止热点 Region 写入产生超大 Region
      • 支持设置根据数据行数 split Region,提升 index scan 效率
    • 性能优化
      • 使用 LocalReader 将 Read 操作从 raftstore 线程分离,减少 Read 延迟
      • 重构 MVCC 框架,优化 memory 使用,提升 scan read 性能
      • 支持基于统计估算进行 Region split,减少 I/O 开销
      • 优化连续写入 Rollback 记录后影响读性能的问题
      • 减少下推聚合计算的内存开销
    • 功能改进
      • 增加大量内建函数下推支持,更完善的 charset 支持
      • 优化 GC 流程,提升 GC 速度并降低 GC 对系统的影响
      • 开启 prevote,加快网络异常时的恢复服务速度
      • 增加 RocksDB 日志文件相关的配置项
      • 调整 scheduler latch 默认配置
      • 使用 tikv-ctl 手动 compact 时可设定是否 compact RocksDB 最底层数据
      • 增加启动时的环境变量检查
      • 支持基于已有数据动态设置 dynamic_level_bytes 参数
      • 支持自定义日志格式
      • tikv-ctl 整合 tikv-fail 工具
      • 增加 threads IO metrics
    • Bug 修复
      • 修复 decimal 相关问题
      • 修复 gRPC max_send_message_len 设置有误的问题
      • 修复 region_size 配置不当时产生的问题