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
- 重构聚合函数框架,提升
Stream
和Hash
聚合算子的执行效率 #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
- 统计信息
- 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_count
和error_count
#6945 - 读取系统变量时增加 Scope 检查 #6958
- 支持
MAX_EXECUTION_TIME
语法 #7012 - 支持更多的
SET
语法 #7020 - Set 系统变量值过程中增加合法性校验 #7117
- 增加
Prepare
语句中PlaceHolder
数量的校验 #7162 - 支持
set character_set_results = null
#7353 - 支持
flush status
语法 #7369 - 修复
SET
和ENUM
类型在information_schema
里的 column size #7347 - 支持建表语句里的
NATIONAL CHARACTER
语法 #7378 - 支持
LOAD DATA
语句的CHARACTER SET
语法 #7391 - 修复
SET
和ENUM
类型的 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
- 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.tables
中AUTO-INCREMENT
的显示问题 #7037 - 支持
admin show ddl jobs <number>
命令,支持输出 number 个 DDL jobs #7028 - 支持并行 DDL 任务执行 #6955
- 改进 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
配置不当时产生的问题