2018 年 11 月 30 日,TiDB 发布 2.1 GA 版。相比 2.0 版本,该版本对系统稳定性、性能、兼容性、易用性做了大量改进。
Index Join
选择范围,提升执行性能Index Join
外表选择,使用估算的行数较少的表作为外表TIDB_SMJ
的作用范围,在没有合适索引可用的情况下也可使用 Merge JoinTIDB_INLJ
的能力,可以指定 Join 中的内表UPDATE
和 DELETE
语句中使用 Index Hint 和 Join HintABS
/CEIL
/FLOOR
/IS TRUE
/IS FALSE
IF
和 IFNULL
的常量折叠算法EXPLAIN
语句输出格式, 使用层级结构表示算子之间的上下游关系Stream
和 Hash
聚合算子的执行效率Hash Aggregate
算子,部分场景下有 350% 的性能提升Project
算子,部分场景有 74% 的性能提升Hash Join
的 Inner
表和 Outer
表的数据,提升执行性能REPLACE INTO
语句的执行速度,性能提升 10xHash Join
的执行过程,当 Join 类型为 Inner Join
或者 Semi Join
时,如果内表为空,不再读取外表数据,快速返回结果EXPLAIN ANALYZE
语句,用于查看 Query 执行过程中各个算子的运行时间,返回结果行数等运行时统计信息支持只在一天中的某个时间段开启统计信息自动 ANALYZE 的功能
支持根据查询的反馈自动更新表的统计信息
支持通过 ANALYZE TABLE WITH BUCKETS
语句配置直方图中桶的个数
优化等值查询和范围查询混合的情况下使用直方图估算 Row Count 的算法
json_contains
json_contains_path
encode/decode
general log
auto_analyze_ratio
系统变量控制自动 Analyze 的阈值tidb_retry_limit
系统变量控制事务自动重试的次数tidb_disable_txn_auto_retry
系统变量控制事务是否自动重试admin show slow
语句来获取慢查询语句tidb_slow_log_threshold
动态设置 slow log 的阈值tidb_query_log_max_len
动态设置日志中被截断的原始 SQL 语句的长度Add Index
的速度,在某些场景下速度大幅提升select tidb_is_ddl_owner()
语句,方便判断 TiDB 是否为 DDL Owner
ALTER TABLE FORCE
语法ALTER TABLE RENAME KEY TO
语法Admin Show DDL Jobs
输出结果中添加表名、库名等信息ddl/owner/resign
HTTP 接口释放 DDL Owner 并开启新一轮 DDL Owner 选举BIT
聚合函数支持 ALL
参数SHOW PRIVILEGES
语句LOAD DATA
语句的 CHARACTER SET
语法CREATE USER
语句的 IDENTIFIED WITH
语法LOAD DATA IGNORE LINES
语句Show ProcessList
语句返回更准确信息Raft PreVote
,避免网络隔离后恢复时产生的重新选举raft learner
功能,降低调度时出现宕机导致数据不可用的风险Region merge
功能,减少元数据带来的开销GetPrevRegion
接口,用于支持 TiDB reverse scan 功能BatchSplitRegion
接口,用于支持 TiKV 快速 Region 分裂GCSafePoint
接口,用于支持 TiDB 并发分布式 GCGetAllStores
接口,用于支持 TiDB 并发分布式 GCFilter
相关的监控UnsafeDestroyRange
API 用于在 drop table/index 的情况下快速回收空间BatchSplit
避免大量写入导致产生特别大的 RegionPreVote
功能,减少网络隔离对服务的影响CompactFiles
的 bug,可能影响 Lightning 导入的数据IngestExternalFile
,避免 flush 卡住写入的问题raft learner
功能,如果从 1.x 版本集群升级至 2.1 版本,须停机升级或者先滚动升级 TiKV,完成后再滚动升级 PD