TiDB 3.0 Beta Release Notes
2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,TiDB Ansible 相应发布 3.0 Beta 版本。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。
TiDB
- 新特性
- 支持 View
- 支持窗口函数
- 支持 Range 分区
- 支持 Hash 分区
- SQL 优化器
- 重新支持聚合消除的优化规则 #7676
- 优化
NOT EXISTS
子查询,将其转化为 Anti Semi Join #7842 - 添加
tidb_enable_cascades_planner
变量以支持新的 Cascades 优化器。目前 Cascades 优化器尚未实现完全,默认关闭 #7879 - 支持在事务中使用 Index Join #7877
- 优化 Outer Join 上的常量传播,使得对 Join 结果里和 Outer 表相关的过滤条件能够下推过 Outer Join 到 Outer 表上,减少 Outer Join 的无用计算量,提升执行性能 #7794
- 调整投影消除的优化规则到聚合消除之后,消除掉冗余的
Project
算子 #7909 - 优化
IFNULL
函数,当输入参数具有非 NULL 的属性的时候,消除该函数 #7924 - 支持对
_tidb_rowid
构造查询的 Range,避免全表扫,减轻集群压力 #8047 - 优化
IN
子查询为先聚合后做 Inner Join 并,添加变量tidb_opt_insubq_to_join_and_agg
以控制是否开启该优化规则并默认打开 #7531 - 支持在
DO
语句中使用子查询 #8343 - 添加 Outer Join 消除的优化规则,减少不必要的扫表和 Join 操作,提升执行性能 #8021
- 修改
TIDB_INLJ
优化器 Hint 的行为,优化器将使用 Hint 中指定的表当做 Index Join 的 Inner 表 #8243 - 更大范围的启用
PointGet
,使得当 Prepare 语句的执行计划缓存生效时也能利用上它 #8108 - 引入贪心的 Join Reorder 算法,优化多表 Join 时 Join 顺序选择的问题 #8394
- 支持 View #8757
- 支持 Window Function #8630
- 当
TIDB_INLJ
未生效时,返回 warning 给客户端,增强易用性 #9037 - 支持根据过滤条件和表的统计信息推导过滤后数据的统计信息的功能 #7921
- 增强 Range Partition 的 Partition Pruning 优化规则 #8885
- SQL 执行引擎
Prepare
语句- 对包含子查询的
Prepare
语句,禁止其添加到Prepare
语句的执行计划缓存中,确保输入不同的用户变量时执行计划的正确性 #8064 - 优化
Prepare
语句的执行计划缓存,使得当语句中包含非确定性函数的时候,该语句的执行计划也能被缓存 #8105 - 优化
Prepare
语句的执行计划缓存,使得DELETE
/UPDATE
/INSERT
的执行计划也能被缓存 #8107 - 优化
Prepare
语句的执行计划缓存,当执行DEALLOCATE
语句时从缓存中剔除对应的执行计划 #8332 - 优化
Prepare
语句的执行计划缓存,通过控制其内存使用以避免缓存过多执行计划导致 TiDB OOM 的问题 #8339 - 优化
Prepare
语句,使得ORDER BY
/GROUP BY
/LIMIT
子句中可以使用 “?” 占位符 #8206
- 对包含子查询的
- 权限管理
- Server
- 兼容性
- DDL
Tools
PD
- 增加
RegionStorage
单独存储 Region 元信息 #1237 - 增加 shuffle hot region 调度 #1361
- 增加调度参数相关 Metrics #1406
- 增加集群 Label 信息相关 Metrics #1402
- 增加导入数据场景模拟 #1263
- 修复 Leader 选举相关的 Watch 问题 #1396