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 FALSEIF 和 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_containsjson_contains_pathencode/decodegeneral logauto_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 OwnerALTER 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