2018 年 11 月 30 日,TiDB 發佈 2.1 GA 版。相比 2.0 版本,該版本對系統穩定性、性能、兼容性、易用性作了大量改進。git
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 的功能github
支持根據查詢的反饋自動更新表的統計信息算法
支持經過 ANALYZE TABLE WITH BUCKETS
語句配置直方圖中桶的個數sql
優化等值查詢和範圍查詢混合的狀況下使用直方圖估算 Row Count 的算法json
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