ITPub博客

首页 > > > TiDB 2.1 RC1 Release Notes

TiDB 2.1 RC1 Release Notes

作者:TigerJin 时间:2018-08-24 22:28:18 0 删除 编辑

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

TiDB

  1. SQL 优化器
  • 修复某些情况下关联子查询去关联后结果不正确的问题
  • 优化 Explain 输出结果
  • 优化 IndexJoin 驱动表选择策略
  • 去掉非 PREPARE 语句的 Plan Cache
  • 修复某些情况下 INSERT 语句无法正常解析执行的问题
  • 修复某些情况下 IndexJoin 结果不正确的问题
  • 修复某些情况下使用唯一索引不能查询到 NULL 值的问题
  • 修复 UTF-8 编码情况下前缀索引的范围计算不正确的问题
  • 修复某些情况下 Project 算子消除导致的结果不正确的问题
  • 修复主键为整数类型时无法使用 USE INDEX(PRIMARY) 的问题
  • 修复某些情况下使用关联列无法计算索引范围的问题

2. SQL 执行引擎

    • 修复某些情况下夏令时时间计算结果不正确的问题
    • 重构聚合函数框架,提升 Stream 和 Hash 聚合算子的执行效率
    • 修复某些情况下 Hash 聚合算子不能正常退出的问题
    • 修复 BIT_AND/BIT_OR/BIT_XOR 没有正确处理非整型数据的问题
    • 优化 REPLACE INTO 语句的执行速度,性能提升近 10 倍
    • 优化时间类型的内存占用,时间类型数据的内存使用降低为原来的一半
    • 修复 UNION 语句整合有符号和无符号型整数结果时与 MySQL 不兼容的问题
    • 修复 LPAD/RPAD/TO_BASE64/FROM_BASE64/REPEAT 因为申请过多内存导致 TiDB panic 的问题
    • 修复 MergeJoin/IndexJoin 在处理 NULL 值时结果不正确的问题
    • 修复某些情况下 Outer Join 结果不正确的问题
    • 增强 Data Truncated 的报错信息,便于定位出错的数据和表中对应的字段
    • 修复某些情况下 Decimal 计算结果不正确的问题
    • 优化点查的查询性能
    • 禁用 Read Commited 隔离级别,避免潜在的问题
    • 修复某些情况下 LTRIM/RTRIM/TRIM 结果不正确的问题
    • 修复 MaxOneRow 算子无法保证返回结果不超过 1 行的问题
    • 拆分 range 个数过多的 Coprocessor 请求

3. 统计信息

    • 优化统计信息动态收集机制
    • 解决数据频繁更新场景下 Auto Analyze 不工作的问题
    • 减少统计信息动态更新过程中的写入冲突
    • 优化统计信息不准确情况下的代价估算
    • 优化 AccessPath 的代价估算策略

4. Server

    • 修复加载权限信息时的 bug
    • 修复 Kill 命令对权限的检查过严问题
    • 解决 Binary 协议中某些数值类型移除的问题
    • 精简日志输出
    • 处理 mismatchClusterID 问题
    • 增加 advertise-address 配置项
    • 增加 GrpcKeepAlive 选项
    • 增加连接或者 Token 时间监控
    • 优化数据解码性能
    • INFORMMATION_SCHEMA 中增加 PROCESSLIST 表
    • 解决权限验证时多条规则可以命中情况下的顺序问题
    • 将部分编码相关的系统变量默认值改为 UTF-8
    • 慢查询日志显示更详细的信息
    • 支持在 PD 注册 tidb-server 的相关信息并通过 HTTP API 获取

5. 兼容性

    • 支持 Session 变量 warning_count 和 error_count
    • 读取系统变量时增加 Scope 检查
    • 支持 MAX_EXECUTION_TIME 语法
    • 支持更多的 SET 语法
    • Set 系统变量值过程中增加合法性校验
    • 增加 Prepare 语句中 PlaceHolder 数量的校验
    • 支持 set character_set_results = null
    • 支持 flush status 语法
    • 修复 SET 和 ENUM 类型在 information_schema 里的 column size
    • 支持建表语句里的 NATIONAL CHARACTER 语法
    • 支持 LOAD DATA 语句的 CHARACTER SET 语法
    • 修复 SET 和 ENUM 类型的 column info
    • 支持 CREATE USER 语句的 IDENTIFIED WITH 语法
    • 修复 TIMESTAMP 类型计算过程中丢失精度的问题
    • 支持更多 SYSTEM 变量的合法性验证
    • 修复 CHAR_LENGTH 函数在计算 binary string 时结果不正确的问题
    • 修复在包含 GROUP BY 的语句里 CONCAT 结果不正确的问题
    • 修复 DECIMAL 类型 CAST 到 STRING 类型时,类型长度不准确的问题

6. DML

    • 解决 Load Data 语句的稳定性
    • 解决一些 Batch 操作情况下的内存使用问题
    • 提升 Replace Into 语句的性能
    • 修复写入 CURRENT_TIMESTAMP 时,精度不一致的问题

7. DDL

    • 改进 DDL 判断 Schema 是否已经同步的方法, 避免某些情况下的误判
    • 修复在 ADD INDEX 过程中的 SHOW CREATE TABLE 结果
    • 非严格 sql-mode 模式下, text/blob/json 的默认值可以为空
    • 修复某些特定场景下 ADD INDEX 的问题
    • 大幅度提升添加 UNIQUE-KEY 索引操作的速度
    • 修复 Prefix-index 在 UTF-8 字符集的场景下的截断问题
    • 增加环境变量 tidb_ddl_reorg_priority 来控制 add-index 操作的优先级
    • 修复 information_schema.tables 中 AUTO-INCREMENT 的显示问题
    • 支持 admin show ddl jobs <number> 命令, 支持输出 number 个 DDL jobs
    • 支持并行 DDL 任务执行

8. Table Partition(实验性)

    • 支持一级分区
    • 支持 Range Partition

PD

  1. 新特性
  • 引入版本控制机制,支持集群滚动兼容升级
  • 开启 Region merge 功能
  • 支持 GetPrevRegion 接口
  • 支持批量 split Region
  • 支持存储 GC safepoint

2. 功能改进

    • 优化系统时间回退影响 TSO 分配的问题
    • 优化处理 Region heartbeat 的性能
    • 优化 Region tree 性能
    • 优化计算热点统计的性能问题
    • 优化 API 接口错误码返回
    • 新增一些控制调度策略的开关
    • 禁止在 label 中使用特殊字符
    • 完善调度模拟器
    • pd-ctl 支持使用统计信息进行 Region split
    • pd-ctl 支持调用 jq 来格式化 JSON 输出
    • 新增 etcd Raft 状态机相关 metrics

3. Bug 修复

    • 修复 leader 切换后 namespace 未重新加载的问题
    • 修复 namespace 调度超出 schedule limit 配置的问题
    • 修复热点调度超出 schedule limit 的问题
    • 修复 PD client 关闭时输出一些错误日志的问题
    • 修复 Region 心跳延迟统计有误的问题

TiKV

  1. 新特性
  • 支持 batch split,防止热点 Region 写入产生超大 Region
  • 支持设置根据数据行数 split Region,提升 index scan 效率

2. 性能优化

    • 使用 LocalReader 将 Read 操作从 raftstore 线程分离,减少 Read 延迟
    • 重构 MVCC 框架,优化 memory 使用,提升 scan read 性能
    • 支持基于统计估算进行 Region split,减少 I/O 开销
    • 优化连续写入 Rollback 记录后影响读性能的问题
    • 减少下推聚合计算的内存开销

3. 功能改进

    • 增加大量内建函数下推支持,更完善的 charset 支持
    • 优化 GC 流程,提升 GC 速度并降低 GC 对系统的影响
    • 开启 prevote,加快网络异常时的恢复服务速度
    • 增加 RocksDB 日志文件相关的配置项
    • 调整 scheduler latch 默认配置
    • 使用 tikv-ctl 手动 compact 时可设定是否 compact RocksDB 最底层数据
    • 增加启动时的环境变量检查
    • 支持基于已有数据动态设置 dynamic_level_bytes 参数
    • 支持自定义日志格式
    • tikv-ctl 整合 tikv-fail 工具
    • 增加 threads IO metrics

4. Bug 修复

    • 修复 decimal 相关问题
    • 修复 gRPC max_send_message_len 设置有误的问题
    • 修复 region_size 配置不当时产生的问题


如今,在社区和 PingCAP 技术团队的共同努力下,TiDB 2.1 RC1 版已发布,在此感谢社区小伙伴们长久以来的参与和贡献。


作为明星级开源的分布式关系型数据库,TiDB 灵感来自于 Google Spanner/F1,具备『分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活』等核心特性。TiDB 于 2015 年 5 月在 GitHub 创建,同年 12 月发布 Alpha 版本,而后于 2016 年 6 月发布 Beta 版,12 月发布 RC1 版, 2017 年 3 月发布 RC2 版,6 月发布 RC3 版,8 月发布 RC4 版,10 月发版 TiDB 1.0,2018 年 3 月发版 2.0 RC1,4 月发版 2.0 GA。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-28

  • 博文量
    494
  • 访问量
    25765