TiDB 2.0 GA Release

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

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。

相關文章

資料庫 最新文章