TiDB 2.1 GA Release Notes 原

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

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 的功能

  • 支持根據查詢的反饋自動更新表的統計信息

  • 支持通過 ANALYZE TABLE WITH BUCKETS 語句配置直方圖中桶的個數

  • 優化等值查詢和範圍查詢混合的情況下使用直方圖估算 Row Count 的算法

表達式

  • 支持內建函數:
    • 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 版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章