TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日,TiDB 發佈 3.0 Beta 版,對應 master branch 的 TiDB-Ansible。相比 2.1 版本,該版本對系統穩定性、優化器、統計信息以及執行引擎作了不少改進。git

TiDB

  • 新特性github

    • 支持 View
    • 支持 Window Function
    • 支持 Range Partition
    • 支持 Hash Partition
  • SQL 優化器算法

    • 從新支持聚合消除的優化規則
    • 優化 NOT EXISTS 子查詢,將其轉化爲 Anti Semi Join
    • 添加 tidb_enable_cascades_planner 變量以支持新的 Cascades 優化器。目前 Cascades 優化器還沒有實現徹底,默認關閉
    • 支持在事務中使用 Index Join
    • 優化 Outer Join 上的常量傳播,使得對 Join 結果裏和 Outer 表相關的過濾條件可以下推過 Outer Join 到 Outer 表上,減小 Outer Join 的無用計算量,提高執行性能
    • 調整投影消除的優化規則到聚合消除以後,消除掉冗餘的 Project 算子
    • 優化 IFNULL 函數,當輸入參數具備非 NULL 的屬性的時候,消除該函數
    • 支持對 _tidb_rowid 構造查詢的 Range,避免全表掃,減輕集羣壓力
    • 優化 IN 子查詢爲先聚合後作 Inner Join 並,添加變量 tidb_opt_insubq_to_join_and_agg 以控制是否開啓該優化規則並默認打開
    • 支持在 DO 語句中使用子查詢
    • 添加 Outer Join 消除的優化規則,減小沒必要要的掃表和 Join 操做,提高執行性能
    • 修改 TIDB_INLJ 優化器 Hint 的行爲,優化器將使用 Hint 中指定的表當作 Index Join 的 Inner 表
    • 更大範圍的啓用 PointGet,使得當 Prepare 語句的執行計劃緩存生效時也能利用上它
    • 引入貪心的 Join Reorder 算法,優化多表 Join 時 Join 順序選擇的問題
    • 支持 View
    • 支持 Window Function
    • TIDB_INLJ 未生效時,返回 warning 給客戶端,加強易用性
    • 支持根據過濾條件和表的統計信息推導過濾後數據的統計信息的功能
    • 加強 Range Partition 的 Partition Pruning 優化規則
  • SQL 執行引擎數據庫

    • 優化 Merge Join 算子,使其支持空的 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併發

    • 支持了對 SQL 語句的 Trace 功能
    • 支持了插件框架
    • 支持同時使用 unix_socket 和 TCP 兩種方式鏈接數據庫
    • 支持了系統變量 interactive_timeout
    • 支持了系統變量 wait_timeout
    • 提供了變量 tidb_batch_commit,能夠按語句數將事務分解爲多個事務
    • 支持 ADMIN SHOW SLOW 語句,方便查看慢日誌
  • 兼容性框架

    • 支持了 ALLOW_INVALID_DATES 這種 SQL mode
    • 提高了 load data 對 CSV 文件的容錯能力
    • 支持了 MySQL 320 握手協議
    • 支持將 unsigned bigint 列聲明爲自增列
    • 支持 SHOW CREATE DATABASE IF NOT EXISTS 語法
    • 當過濾條件中包含用戶變量時不對其進行謂詞下推的操做,更加兼容 MySQL 中使用用戶變量模擬 Window Function 的行爲
  • DDLsocket

    • 支持快速恢復誤刪除的表
    • 支持動態調整 ADD INDEX 的併發數
    • 支持更改表或者列的字符集到 utf8/utf8mb4
    • 默認字符集從 utf8 變爲 utf8mb4
    • 支持 RANGE PARTITION

Tools

  • TiDB-Lightning分佈式

    • 大幅優化 SQL 轉 KV 的處理速度
    • 對單表支持 batch 導入,提升導入性能和穩定性

PD

  • 增長 RegionStorage 單獨存儲 Region 元信息
  • 增長 shuffle hot region 調度
  • 增長調度參數相關 Metrics
  • 增長集羣 Label 信息相關 Metrics
  • 增長導入數據場景模擬
  • 修復 Leader 選舉相關的 Watch 問題

TiKV

  • 支持了分佈式 GC
  • 在 Apply snapshot 以前檢查 RocksDB level 0 文件,避免產生 Write stall
  • 支持了逆向 raw_scanraw_batch_scan
  • 更好的夏令時支持
  • 支持了使用 HTTP 方式獲取監控信息
  • 支持批量方式接收和發送 Raft 消息
  • 引入了新的存儲引擎 Titan
  • 升級 gRPC 到 v1.17.2
  • 支持批量方式接收客戶端請求和發送回覆
  • 多線程 Apply
  • 線程 Raftstore

英文版 Release Notes
https://github.com/pingcap/docs/blob/master/releases/3.0beta.md

相關文章
相關標籤/搜索