TiDB 2.0 GA Release Notes
05-21
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 Put
,Raw Batch Get
,Raw Batch Delete
和Raw 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 支持
源碼地址:https://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