TiDB 2.1 RC1 Release Notes

网友投稿 297 2018-08-24

内容来源:http://mp.weixin.qq.com/s?__biz=MzI3NDIxNTQyOQ==&mid=2247486544&idx=2&sn=9d8266f3a2f088ca1291d2f91f571297&chksm=eb162b3adc61a22c28eddd0c018996f3564c19ce7445afa58dc1912b3913bfa9ecdf99d3779d#rd


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


TiDB

  • SQL 优化器

    • 修复某些情况下关联子查询去关联后结果不正确的问题  

    • 优化 `Explain` 输出结果

    • 优化 `IndexJoin` 驱动表选择策略

    • 去掉非 `PREPARE` 语句的 Plan Cache

    • 修复某些情况下 `INSERT` 语句无法正常解析执行的问题  

    • 修复某些情况下 `IndexJoin` 结果不正确的问题

    • 修复某些情况下使用唯一索引不能查询到 `NULL` 值的问题

    • 修复 UTF-8 编码情况下前缀索引的范围计算不正确的问题

    • 修复某些情况下 `Project` 算子消除导致的结果不正确的问题

    • 修复主键为整数类型时无法使用 `USE INDEX( PRIMARY )` 的问题

    • 修复某些情况下使用关联列无法计算索引范围的问题

  • 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 请求

  • 统计信息

    • 优化统计信息动态收集机制

    • 解决数据频繁更新场景下 `Auto Analyze` 不工作的问题

    • 减少统计信息动态更新过程中的写入冲突

    • 优化统计信息不准确情况下的代价估算

    • 优化 `AccessPath` 的代价估算策略

  • Server

    • 修复加载权限信息时的 bug

    • 修复 `Kill` 命令对权限的检查过严问题

    • 解决 Binary 协议中某些数值类型移除的问题

    • 精简日志输出

    • 处理 `mismatchClusterID` 问题

    • 增加 `advertise-address` 配置项

    • 增加 `GrpcKeepAlive` 选项

    • 增加连接或者 `Token` 时间监控

    • 优化数据解码性能

    • `INFORMMATION_SCHEMA` 中增加 `PROCESSLIST` 表

    • 解决权限验证时多条规则可以命中情况下的顺序问题

    • 将部分编码相关的系统变量默认值改为 UTF-8

    • 慢查询日志显示更详细的信息

    • 支持在 PD 注册 tidb-server 的相关信息并通过 HTTP API 获取

  • 兼容性

    • 支持 `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` 类型时,类型长度不准确的问题

  • DML

    • 解决 `Load Data` 语句的稳定性

    • 解决一些 `Batch` 操作情况下的内存使用问题

    • 提升 `Replace Into` 语句的性能

    • 修复写入 `CURRENT_TIMESTAMP` 时,精度不一致的问题

  • 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 任务执行

  • 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` 配置不当时产生的问题


如今,在社区和 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。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiDB Operator,让 TiDB 成为真正的 Cloud-Native 数据库【附视频】
下一篇:CNCF to Host TiKV in the Sandbox
相关文章