TiDB 2.1 GA Release Notes

2018 年 11 月 30 日,TiDB 發佈 2.1 GA 版。相比 2.0 版本,該版本對系統穩定性、性能、兼容性、易用性作了大量改進。git

TiDB

SQL 優化器

  • 優化 Index Join 選擇範圍,提高執行性能
  • 優化 Index Join 外表選擇,使用估算的行數較少的表做爲外表
  • 擴大 Join Hint TIDB_SMJ 的做用範圍,在沒有合適索引可用的狀況下也可以使用 Merge Join
  • 增強 Join Hint TIDB_INLJ 的能力,能夠指定 Join 中的內表
  • 優化關聯子查詢,包括下推 Filter 和擴大索引選擇範圍,部分查詢的效率有數量級的提高
  • 支持在 UPDATEDELETE 語句中使用 Index Hint 和 Join Hint
  • 支持更多函數下推:ABS/CEIL/FLOOR/IS TRUE/IS FALSE
  • 優化內建函數 IFIFNULL 的常量摺疊算法
  • 優化 EXPLAIN 語句輸出格式, 使用層級結構表示算子之間的上下游關係

SQL 執行引擎

  • 重構全部聚合函數,提高 StreamHash 聚合算子的執行效率
  • 實現並行 Hash Aggregate 算子,部分場景下有 350% 的性能提高
  • 實現並行 Project 算子,部分場景有 74% 的性能提高
  • 併發地讀取 Hash JoinInner 表和 Outer 表的數據,提高執行性能
  • 優化 REPLACE INTO 語句的執行速度,性能提高 10x
  • 優化時間類型的內存佔用,時間類型數據的內存使用下降爲原來的一半
  • 優化點查的查詢性能, Sysbench 點查效率提高 60%
  • TiDB 插入和更新寬表,性能提高接近 20 倍
  • 支持在配置文件中設置單個查詢的內存使用上限
  • 優化 Hash 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

Server

DDL

  • 支持 Add Index 語句與其餘 DDL 語句並行執行,避免耗時的 Add Index 操做阻塞其餘操做
  • 優化 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 選舉

兼容性

  • 支持更多 MySQL 語法
  • BIT 聚合函數支持 ALL 參數
  • 支持 SHOW PRIVILEGES 語句
  • 支持 LOAD DATA 語句的 CHARACTER SET 語法
  • 支持 CREATE USER 語句的 IDENTIFIED WITH 語法
  • 支持 LOAD DATA IGNORE LINES 語句
  • Show ProcessList 語句返回更準確信息

PD

可用性優化

  • 引入 TiKV 版本控制機制,支持集羣滾動兼容升級
  • PD 節點間 開啓 Raft PreVote,避免網絡隔離後恢復時產生的從新選舉
  • 開啓 raft learner 功能,下降調度時出現宕機致使數據不可用的風險
  • TSO 分配再也不受系統時間回退影響
  • 支持 Region merge 功能,減小元數據帶來的開銷

調度器優化

  • 優化 Down Store 的處理流程,加快發生宕機後補副本的速度
  • 優化熱點調度器,在流量統計信息抖動時適應性更好
  • 優化 Coordinator 的啓動,減小重啓 PD 時帶來的沒必要要調度
  • 優化 Balance Scheduler 頻繁調度小 Region 的問題
  • 優化 Region merge,調度時考慮 Region 中數據的行數
  • 新增一些控制調度策略的開關
  • 完善調度模擬器,添加調度場景模擬

API 及運維工具

監控

  • 增長 Filter相關的監控
  • 新增 etcd Raft 狀態機相關監控

性能優化

  • 優化處理 Region heartbeat 的性能,減小 heartbeat 帶來的內存開銷
  • 優化 Region tree 性能
  • 優化計算熱點統計的性能問題

TiKV

Coprocessor

Transaction

Raftstore

存儲引擎

  • 修復 RocksDB CompactFiles 的 bug,可能影響 Lightning 導入的數據
  • 升級 RocksDB 到 v5.15,解決 snapshot 文件可能會被寫壞的問題
  • 優化 IngestExternalFile,避免 flush 卡住寫入的問題

tikv-ctl

Tools

升級兼容性說明

  • 因爲新版本存儲引擎更新,不支持在升級後回退至 2.0.x 或更舊版本
  • 新版本默認開啓 raft learner 功能,若是從 1.x 版本集羣升級至 2.1 版本,須停機升級或者先滾動升級 TiKV,完成後再滾動升級 PD
  • 從 2.0.6 以前的版本升級到 2.1.0 以前,最好確認集羣中是否存在正在運行中的 DDL 操做,特別是耗時的 Add Index 操做
  • 由於 2.1 版本啓用了並行 DDL,對於早於 2.0.1 版本的集羣,沒法滾動升級到 2.1,能夠選擇下面兩種方案:
    • 停機升級,直接從早於 2.0.1 的 TiDB 版本升級到 2.1
    • 先滾動升級到 2.0.1 或者以後的 2.0.x 版本,再滾動升級到 2.1 版本
相關文章
相關標籤/搜索