標籤:

TiDB 2.0 GA Release Notes

TiDB 2.0 GA Release Notes

來自專欄 TiDB 的後花園

2018 年 4 月 27 日,TiDB 發布 2.0 GA 版。相比 1.0 版本,對 MySQL 兼容性、系統穩定性、優化器和執行器做了很多改進。

TiDB

  • SQL 優化器
    • 精簡統計信息數據結構,減小內存佔用
    • 加快進程啟動時載入統計信息速度
    • 支持統計信息動態更新 [experimental]
    • 優化代價模型,對代價估算更精準
    • 使用 Count-Min Sketch 更精確地估算點查的代價
    • 支持分析更複雜的條件,儘可能充分的使用索引
    • 支持通過 STRAIGHT_JOIN 語法手動指定 Join 順序
    • GROUP BY 子句為空時使用 Stream Aggregation 運算元,提升性能
    • 支持使用索引計算 Max/Min 函數
    • 優化關聯子查詢處理演算法,支持將更多類型的關聯子查詢解關聯並轉化成 Left Outer Join
    • 擴大 IndexLookupJoin 的使用範圍,索引前綴匹配的場景也可以使用該演算法
  • SQL 執行引擎
    • 使用 Chunk 結構重構所有執行器運算元,提升分析型語句執行性能,減少內存佔用,顯著提升 TPC-H 結果
    • 支持 Streaming Aggregation 運算元下推
    • 優化 Insert Into Ignore 語句性能,提升 10 倍以上
    • 優化 Insert On Duplicate Key Update 語句性能,提升 10 倍以上
    • 下推更多的數據類型和函數到 TiKV 計算
    • 優化 Load Data 性能,提升 10 倍以上
    • 支持對物理運算元內存使用進行統計,通過配置文件以及系統變數指定超過閾值後的處理行為
    • 支持限制單條 SQL 語句使用內存的大小,減少程序 OOM 風險
    • 支持在 CRUD 操作中使用隱式的行 ID
    • 提升點查性能
  • Server
    • 支持 Proxy Protocol
    • 添加大量監控項, 優化日誌
    • 支持配置文件的合法性檢測
    • 支持 HTTP API 獲取 TiDB 參數信息
    • 使用 Batch 方式 Resolve Lock,提升垃圾回收速度
    • 支持多線程垃圾回收
    • 支持 TLS
  • 兼容性
    • 支持更多 MySQL 語法
    • 支持配置文件修改 lower_case_table_names 系統變數,用於支持 OGG 數據同步工具
    • 提升對 Navicat 的兼容性
    • Information_Schema 中支持顯示建表時間
    • 修復部分函數/表達式返回類型和 MySQL 不同的問題
    • 提升對 JDBC 兼容性
    • 支持更多的 SQL_MODE
  • DDL
    • 優化 Add Index 的執行速度,部分場景下速度大幅度提升
    • Add Index 操作變更為低優先順序,降低對線上業務影響
    • Admin Show DDL Jobs 輸出更詳細的 DDL 任務狀態信息
    • 支持 Admin Show DDL Job Queries JobID 查詢當前正在運行的 DDL 任務的原始語句
    • 支持 Admin Recover Index 命令,用於災難恢復情況下修復索引數據
    • 支持通過 Alter 語句修改 Table Options

PD

  • 增加 Region Merge 支持,合併數據刪除後產生的空 Region [experimental]
  • 增加 Raft Learner 支持 [experimental]
  • 調度器優化
    • 調度器適應不同的 Region size
    • 提升 TiKV 宕機時數據恢復的優先順序和恢復速度
    • 提升下線 TiKV 節點搬遷數據的速度
    • 優化 TiKV 節點空間不足時的調度策略,儘可能防止空間不足時磁碟被寫滿
    • 提升 balance-leader scheduler 的調度效率
    • 減少 balance-region scheduler 調度開銷
    • 優化 hot-region scheduler 的執行效率
  • 運維介面及配置
    • 增加 TLS 支持
    • 支持設置 PD leader 優先順序
    • 支持基於 label 配置屬性
    • 支持配置特定 label 的節點不調度 Region leader
    • 支持手動 Split Region,可用於處理單 Region 熱點的問題
    • 支持打散指定 Region,用於某些情況下手動調整熱點 Region 分布
    • 增加配置參數檢查規則,完善配置項的合法性較驗
  • 調試介面
    • 增加 Drop Region 調試介面
    • 增加枚舉各個 PD health 狀態的介面
  • 統計相關
    • 添加異常 Region 的統計
    • 添加 Region 隔離級別的統計
    • 添加調度相關 metrics
  • 性能優化
    • PD leader 盡量與 etcd leader 保持同步,提升寫入性能
    • 優化 Region heartbeat 性能,現可支持超過 100 萬 Region

TiKV

  • 功能
    • 保護關鍵配置,防止錯誤修改
    • 支持 Region Merge [experimental]
    • 添加 Raw DeleteRange API
    • 添加 GetMetric API
    • 添加 Raw Batch PutRaw Batch GetRaw Batch DeleteRaw Batch Scan
    • 給 Raw KV API 增加 Column Family 參數,能對特定 Column Family 進行操作
    • Coprocessor 支持 streaming 模式,支持 streaming 聚合
    • 支持配置 Coprocessor 請求的超時時間
    • 心跳包攜帶時間戳
    • 支持在線修改 RocksDB 的一些參數,包括 block-cache-size 大小等
    • 支持配置 Coprocessor 遇到某些錯誤時的行為
    • 支持以導數據模式啟動,減少導數據過程中的寫放大
    • 支持手動對 region 進行對半 split
    • 完善數據修復工具 tikv-ctl
    • Coprocessor 返回更多的統計信息,以便指導 TiDB 的行為
    • 支持 ImportSST API,可以用於 SST 文件導入 [experimental]
    • 新增 TiKV Importer 二進位,與 TiDB Lightning 集成用於快速導入數據 [experimental]
  • 性能
    • 使用 ReadPool 優化讀性能,raw_get/get/batch_get 提升 30%
    • 提升 metrics 的性能
    • Raft snapshot 處理完之後立即通知 PD,加快調度速度
    • 解決 RocksDB 刷盤導致性能抖動問題
    • 提升在數據刪除之後的空間回收
    • 加速啟動過程中的垃圾清理過程
    • 使用 DeleteFilesInRanges 減少副本遷移時 I/O 開銷
  • 穩定性
    • 解決在 PD leader 發送切換的情況下 gRPC call 不返回問題
    • 解決由於 snapshot 導致下線節點慢的問題
    • 限制搬移副本臨時佔用的空間大小
    • 如果有 Region 長時間沒有 Leader,進行上報
    • 根據 compaction 事件及時更新統計的 Region size
    • 限制單次 scan lock 請求的掃描的數據量,防止超時
    • 限制接收 snapshot 過程中的內存佔用,防止 OOM
    • 提升 CI test 的速度
    • 解決由於 snapshot 太多導致的 OOM 問題
    • 配置 gRPC 的 keepalive 參數
    • 修復 Region 增多容易 OOM 的問題

TiSpark

TiSpark使用獨立的版本號,現為1.0 GA。TiSpark 1.0 版本組件提供了針對 TiDB 上的數據使用 Apache Spark 進行分散式計算的能力。

  • 提供了針對 TiKV 讀取的 gRPC 通信框架
  • 提供了對 TiKV 組件數據的和通信協議部分的編碼解碼
  • 提供了計算下推功能,包含
    • 聚合下推
    • 謂詞下推
    • TopN 下推
    • Limit 下推
  • 提供了索引相關支持
    • 謂詞轉化聚簇索引範圍
    • 謂詞轉化次級索引
    • Index Only 查詢優化
    • 運行時索引退化掃表優化
  • 提供了基於代價優化
    • 統計信息支持
    • 索引選擇
    • 廣播表代價估算
  • 多種 Spark Interface 的支持
    • Spark Shell 支持
    • ThriftServer/JDBC 支持
    • Spark-SQL 交互支持
    • PySpark Shell 支持
    • SparkR 支持

源碼地址:github.com/pingcap

如今,在社區和 PingCAP 技術團隊的共同努力下,TiDB 2.0 GA 版已發布,在此感謝社區小夥伴們長久以來的參與和貢獻。

作為世界級開源的分散式關係型資料庫,TiDB 靈感來自於 Google Spanner/F1,具備『分散式強一致性事務、在線彈性水平擴展、故障自恢復的高可用、跨數據中心多活』等核心特性。TiDB 於 2015 年 5 月在 GitHub 創建,同年 12 月發布 Alpha 版本,而後於 2016 年 6 月發布 Beta 版,12 月發布 RC1 版, 2017 年 3 月發布 RC2 版,6 月發布 RC3 版,8 月發布 RC4 版,10 月發版 TiDB 1.0,並在 2018 年 3 月發版 2.0 RC1。

推薦閱讀:

分散式SQL執行引擎核心是什麼?Fragment、Stage、Subplan等概念有什麼區別?
Spark作為ETL工具與SequoiaDB的結合應用
SequoiaDB版本在線升級介紹說明
NewSQL系統綜述——NewSQL到底New在哪裡?
TiDB RC1 Release

TAG:TiDB | NoSQL | NewSQL |