2019 年 1 月 19 日,TiDB 發佈 3.0 Beta 版,對應 master branch 的 TiDB-Ansible。相比 2.1 版本,該版本對系統穩定性、優化器、統計信息以及執行引擎作了不少改進。git
新特性github
SQL 優化器算法
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 給客戶端,加強易用性SQL 執行引擎數據庫
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
語句的權限檢查Server併發
Trace
功能unix_socket
和 TCP 兩種方式鏈接數據庫interactive_timeout
wait_timeout
tidb_batch_commit
,能夠按語句數將事務分解爲多個事務ADMIN SHOW SLOW
語句,方便查看慢日誌兼容性框架
ALLOW_INVALID_DATES
這種 SQL modeSHOW CREATE DATABASE IF NOT EXISTS
語法DDLsocket
utf8
變爲 utf8mb4
TiDB-Lightning分佈式
RegionStorage
單獨存儲 Region 元信息raw_scan
和 raw_batch_scan
英文版 Release Notes
https://github.com/pingcap/docs/blob/master/releases/3.0beta.md