2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎作了不少改进。git
NOT EXISTS
子查询,将其转化为 Anti Semi Jointidb_enable_cascades_planner
变量以支持新的 Cascades 优化器。目前 Cascades 优化器还没有实现彻底,默认关闭Project
算子IFNULL
函数,当输入参数具备非 NULL 的属性的时候,消除该函数_tidb_rowid
构造查询的 Range,避免全表扫,减轻集群压力IN
子查询为先聚合后作 Inner Join 并,添加变量 tidb_opt_insubq_to_join_and_agg
以控制是否开启该优化规则并默认打开DO
语句中使用子查询TIDB_INLJ
优化器 Hint 的行为,优化器将使用 Hint 中指定的表当作 Index Join 的 Inner 表PointGet
,使得当 Prepare 语句的执行计划缓存生效时也能利用上它TIDB_INLJ
未生效时,返回 warning 给客户端,加强易用性ON
条件EXECUTE
语句时使用的用户变量COMMIT
语句打印慢查询信息EXPLAIN ANALYZE
功能,使得 SQL 调优过程更加简单admin show next_row_id
tidb_init_chunk_size
以控制执行引擎使用的初始 Chunk 大小shard_row_id_bits
,对自增 ID 作越界检查Prepare
语句
Prepare
语句,禁止其添加到 Prepare
语句的执行计划缓存中,确保输入不一样的用户变量时执行计划的正确性Prepare
语句的执行计划缓存,使得当语句中包含非肯定性函数的时候,该语句的执行计划也能被缓存Prepare
语句的执行计划缓存,使得 DELETE
/UPDATE
/INSERT
的执行计划也能被缓存Prepare
语句的执行计划缓存,当执行 DEALLOCATE
语句时从缓存中剔除对应的执行计划Prepare
语句的执行计划缓存,经过控制其内存使用以免缓存过多执行计划致使 TiDB OOM 的问题Prepare
语句,使得 ORDER BY
/GROUP BY
/LIMIT
子句中可使用 “?” 占位符ANALYZE
语句的权限检查USE
语句的权限检查SET GLOBAL
语句的权限检查SHOW PROCESSLIST
语句的权限检查Trace
功能unix_socket
和 TCP 两种方式链接数据库interactive_timeout
wait_timeout
tidb_batch_commit
,能够按语句数将事务分解为多个事务ADMIN SHOW SLOW
语句,方便查看慢日志ALLOW_INVALID_DATES
这种 SQL modeSHOW CREATE DATABASE IF NOT EXISTS
语法utf8
变为 utf8mb4
RegionStorage
单独存储 Region 元信息raw_scan
和 raw_batch_scan
英文版 Release Notes https://github.com/pingcap/docs/blob/master/releases/3.0beta.mdgithub