TiDB 3.0.4 Release Notes
发版日期:2019 年 10 月 8 日
TiDB 版本:3.0.4
TiDB Ansible 版本:3.0.4
新特性
- 新增系统表
performance_schema.events_statements_summary_by_digest
,用于排查 SQL 级别的性能问题 - TiDB 的
SHOW TABLE REGIONS
语法新增WHERE
条件子句 - Reparo 新增
worker-count
和txn-batch
配置项,用于控制恢复速率
- 新增系统表
改进提升
- TiKV 支持批量
Split
和空的Split
命令,使得 Split 可以批量进行 - TiKV 添加 RocksDB 双向链表支持,提升逆序扫性能
- Ansible 新增
iosnoop
和funcslower
两个 perf 工具,方便诊断集群状态 - TiDB 优化慢日志输出内容,删除冗余字段
- TiKV 支持批量
行为变更
- TiDB 修改
txn-local-latches.enable
默认值为false
,默认不启用本地事务冲突检测 - TiDB 添加全局作用域系统变量
tidb_txn_mode
,允许配置使用悲观锁,请注意默认情况下,TiDB 仍然使用乐观锁 - TiDB 慢日志中的
Index_ids
字段替换为Index_names
字段,提升慢日志易用性 - TiDB 配置文件中添加
split-region-max-num
参数,用于调整SPLIT TABLE
语法允许的最大 Region 数量 - TiDB 修改 SQL 超出内存限制后的行为,从断开链接修改为返回
Out Of Memory Quota
错误 - 为避免误操作,TiDB 默认不再允许删除列的
AUTO_INCREMENT
属性,当确实需要删除时,请更改系统变量tidb_allow_remove_auto_inc
- TiDB 修改
问题修复
- TiDB 修复特殊语法
PRE_SPLIT_REGIONS
没有使用注释的方式向下游同步的问题 - TiDB 修复使用游标获取
PREPARE
+EXECUTE
执行结果时,慢日志不正确的问题 - PD 修复相邻小 Region 无法 Merge 的问题
- TiKV 修复空闲集群中文件描述符泄漏导致长期运行可能会引起 TiKV 进程异常退出的问题
- TiDB 修复特殊语法
社区贡献者
感谢以下社区贡献者参与本次发版:
TiDB
- SQL 优化器
- 修复
Feedback
切分查询范围出错的问题 #12170 - 修改当
SHOW STATS_BUCKETS
结果中包含无效 Key 时的行为,将返回错误修改为使用 16 进制显示 #12094 - 修复查询中包含
SLEEP
函数时(例如select 1 from (select sleep(1)) t;)
),由于列裁剪导致查询中的sleep(1)
失效的问题 #11953 - 当查询只关心表的行数而不关心表数据时,使用索引扫描降低 IO #12112
- 当
use index()
中没有指定索引时不去使用任何索引,和 MySQL 兼容 (如explain select a from t use index();
) #12100 - 严格限制统计信息
CMSketch
中TopN
记录的数量,修复快速analyze
因为超过事务大小限制而失败的问题 #11914 - 修复
Update
语句包含子查询时,转换子查询出现的错误 #12483 - 将 Limit 算子下推到
IndexLookUpReader
执行逻辑中优化select ... limit ... offset ...
的执行性能 #12378
- 修复
- SQL 执行引擎
PREPARED
语句执行错误时,在日志中打印 SQL 语句 #12191- 分区表使用
UNIX_TIMESTAMP
函数分区时,支持分区裁剪 #12169 - 修复
AUTO INCREMENT
分配MAX int64
和MAX uint64
没有报错的问题 #12162 SHOW TABLE … REGIONS
和SHOW TABLE .. INDEX … REGIONS
语法新增WHERE
条件子句 #12123- 修改 SQL 超出内存限制后的行为,从断开链接修改为返回
Out Of Memory Quota
错误 #12127 - 修复
JSON_UNQUOTE
函数处理 JSON 文本结果不正确的问题 #11955 - 修复
INSERT
语句中,第一行中为AUTO_INCREMENT
列赋值,LAST INSERT ID
不正确的问题(例如insert into t (pk, c) values (1, 2), (NULL, 3)
)#12002 - 修复
PREPARE
语句中,GroupBY
解析规则错误的问题 #12351 - 修复点查中权限检查不正确的问题 #12340
- 修复
PREPARE
语句类型没有记录在监控中的问题 #12331 - 支持点查中表名使用别名(例如
select * from t tmp where a = "aa"
)#12282 - 修复向 BIT 类型列插入数值时,值没有作为无符号类型处理而导致插入负数报错的问题 #12423
- 修复时间取整不正确的问题(例如
2019-09-11 11:17:47.999999666
应该被取整到2019-09-11 11:17:48
)#12258 - 调整表达式黑名单系统表的用法(例如
<
与lt
等价)#11975 - 调整函数不存在的错误消息,添加数据库前缀(例如
[expression:1305]FUNCTION test.std_samp does not exist
)#12111
- Server
- 慢日志中添加
Prev_stmt
字段,用于最后一条语句是COMMIT
时输出前一条语句 #12180 - 优化慢日志输出内容,删除冗余字段 #12144
- 修改
txn-local-latches.enable
默认值为false
,默认不启用本地事务冲突检测 #12095 - 将慢日志中的
Index_ids
字段替换为Index_names
字段,提升慢日志易用性 #12061 - 添加全局作用域系统变量
tidb_txn_mode
,允许配置使用悲观锁 #12049 - 慢日志中添加
Backoff
字段,用来记录 2PC Commit 阶段的 Backoff 信息 #12335 - 修复使用游标获取
PREPARE
+EXECUTE
执行结果时,慢日志不正确的问题(例如PREPARE stmt1FROM SELECT * FROM t WHERE a > ?; EXECUTE stmt1 USING @variable
)#12392 - 支持使用
tidb_enable_stmt_summary
,开启后会对 SQL 语句进行统计,并可以使用系统表performance_schema.events_statements_summary_by_digest
查询统计结果 #12308 - 调整了 tikv-client 中部分日志级别(例如由于连接断开使得打印的
batchRecvLoop fails
日志级别由ERROR
改为INFO
)#12383
- 慢日志中添加
- DDL
- 新增变量
tidb_allow_remove_auto_inc
,默认禁止删除列AUTO INCREMENT
属性 #12145 - 修复 TiDB 特殊语法
PRE_SPLIT_REGIONS
没有使用注释的方式向下游同步,导致下游数据库报错的问题 #12120 - 在配置文件中添加
split-region-max-num
参数,使得SPLIT TABLE
语法允许的最大 Region 数量可调整,该参数默认值10000
#12097 - 支持将一个 Region 切分成多个 Region,并修复打散 Region 超时的问题 #12343
- 修复当索引包含自增列,并且该自增列被两个索引引用时删除失败的问题 #12344
- 新增变量
- Monitor
- 增加监控指标
connection_transient_failure_count
,用于统计tikvclient
的 gRPC 连接错误数量 #12093
- 增加监控指标
TiKV
- Raftstore
- Server
- Storage
PD
- 修复相邻小 Region 无法 Merge 的问题 #1726
- 修复 pd-ctl 的 TLS 启用参数失效问题 #1738
- 修复可能导致 PD operator 被意外移除的线程安全问题 #1734
- Region syncer 支持 TLS #1739
Tools
- TiDB Binlog
- TiDB Lightning
TiDB Ansible
- 更新 TiSpark 版本至 2.2.0 #926
- 更新 TiDB 配置项
pessimistic_txn
的默认值为true
#933 - 新增更多系统级别监控到
node_exporter
#938 - 新增
iosnoop
和funcslower
两个 perf 工具,方便诊断集群状态 #946 - Ansible 的 Raw 模块更新成 Shell 模块,解决密码过期等场景发生的长时间等待问题 #949
- 更新 TiDB 配置项
txn_local_latches
的默认值为false
- 优化 Grafana dashboard 监控项和告警规则 #962 #963 #969
- 新增配置文件检查功能,在部署和升级之前检查配置文件是否正确 #934 #972