TiDB 2.0 GA Release

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 支持

現在,在社區和 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。
相關文章
相關標籤/搜索