TiDB 4.0 Beta Release Notes
发版日期:2020 年 1 月 17 日
TiDB 版本:4.0.0-beta
TiDB Ansible 版本:4.0.0-beta
TiDB
- 当
Insert
/Replace
/Delete
/Update
在执行过程中所使用的内存空间超过启动配置项MemQuotaQuery
的限制时,输出日志或取消本次执行过程,具体行为取决于启动配置项OOMAction
#14179 #14289 #14299 - 估算
Index Join
的代价时由仅考虑驱动表的行数调整为考虑驱动表和被驱动表的行数,提升估算的准确性 #12085 - 新增 15 个 SQL hint,用于控制优化器行为,提升优化器稳定性
- 提升查询中所涉及到的列能被索引全覆盖时的性能 #12022
- 对表上的
OR
表达式过滤条件,使用多个索引组合进行表访问,提升查询性能 #10121 #10512 #11245 #12225 #12248 #12305 #12843 - 优化 Range 计算流程,缓存并去重索引计算的结果,减少 CPU 开销,提升 range 计算的性能 #12856
- Slow Log 日志的级别与普通日志的级别解耦 #12359
- 新增
oom-use-tmp-storage
参数,默认值为true
,用于控制当单条 SQL 执行过程中占用内存使用超过mem-quota-query
且 SQL 中包含Hash Join
时,系统会采用临时文件来缓存中间结果 #11832 #11937 #12116 #12067 - 支持使用
create index
/alter table add index
语句创建表达式索引,使用drop index
语句删除表达式索引 #14117 query-log-max-len
参数默认值调大为4096
,减少输出被截断 SQL 的数量,此参数可通过 SQL 动态调整 #12491- 支持在列属性上添加
AutoRandom
关键字,用于控制系统自动为主键分配随机整数,避免AutoIncrement
自增主键带来的写入热点问题 #13127 - 支持表级锁 (Table Locks) #11038
ADMIN SHOW DDL JOBS
支持LIKE
或WHERE
语法进行条件过滤 #12484information_schema.tables
表新增TIDB_ROW_ID_SHARDING_INFO
列,输出列的 RowID 打散相关的信息(例如:表A
指定SHARD_ROW_ID_BITS
,该列的值为"SHARD_BITS={bit_number}"
)#13418- 优化 SQL 错误信息的错误码,避免出现多个错误信息的错误码都是
ERROR 1105 (HY000)
(即类型为Unknown Error
)的情况 - 在估算行数时将离散类型的很窄的 range 转化为
point set
然后用 CM-Sketch 提升估算精度 #11524 - 支持普通
Analyze
得到的 CM-Sketch 维护TopN
信息,将出现次数较多的值单独维护 #11409 - 支持动态调整 CM-Sketch 长宽和
TopN
数目 #11278 - 新增 SQL Binding 的自动捕获和自动演进功能 #13199 #12434
- 优化与 TiKV 之间通信息编码格式,采用
Chunk
格式编码,提升网络通信性能 #12023 #12536 #12613 #12621 #12899 #13060 #13349 - 支持新的行存储格式,提升宽表性能 #12634
- 优化
Recover Binlog
接口,确保等待当前正在提交的事务都提交完成再返回 #13740 - 新增通过 HTTP
info/all
接口,查询集群中所有 TiDB server 开启 binlog 的状态 #13025 - 新增在事务模式是悲观事务时,支持使用 MySQL 兼容的 Read Committed 事务隔离级别 #14087
- 支持超大事务,事务大小的限制受限于物理内存大小
- 提升
Kill
稳定性 #10841 LOAD DATA
支持十六进制和二进制表达式作为分隔符 #11029IndexLookupJoin
拆分为IndexHashJoin
与IndexMergeJoin
,提升IndexLookupJoin
的执行性能,减少执行过程中的内存消耗 #8861 #12139 #12349 #13238 #13451 #13714- 修复 RBAC 若干问题 #13896 #13820 #13940 #14090 #13940 #13014
- 修复创建视图时,由于
select
语句包含union
视图无法创建成功的问题 #12595 - 修复
CAST
函数若干问题 - Slow log 输出 TiKV RPC 的
backoff
具体信息,方便排查问题 #13770 - 优化统一 expensive log 中内存统计信息的格式 #12809
- 优化
explain
显式格式,支持输出算子占用内存和磁盘的信息 #13914 #13692 #13686 #11415 #13927 #13764 #13720 - 优化
LOAD DATA
重复值检查,按照事务粒度进行且事务大小可通过tidb_dml_batch_size
配置 #11132 - 优化
LOAD DATA
性能,将数据读取处理和批量提交分离,且分派到不同的 Worker 处理 #11533 #11284
TiKV
- 升级 RocksDB 的版本到 6.4.6
- 系统启动时自动创建 2GB 大小的空文件,解决磁盘空间被写满时系统无法正常进行 Compaction 的问题 #6321
- 新增快速备份恢复功能
- 新增从 Follower 副本读取数据的功能
- 提升 TiDB 通过索引读取数据的性能 #5682
- 修复
CAST
函数在 TiDB 和 TiKV 中行为不一致性的问题
PD
- 新增根据存储节点负载信息优化热点调度的功能
- 新增 Placement Rules 功能,通过组合不同的调度规则,精细控制任意一段数据的副本的数量、存放位置、存储主机类型、角色等信息
- 支持插件功能 (experimental) #1799
- 新增调度器支持自定义配置功能,支持配置调度器的作用范围 (experimental) #1735 #1783 #1791
- 新增根据集群负载信息自动调整调度速度的功能(experimental,默认不打开)#1875 #1887 #1902
Tools
- TiDB Lightning
- 命令行增加配置下游数据库密码的参数 #253