作者:申礫

今年 1 月份,我們發布了 TiDB 3.0.0 Beta 版本,DevCon 上也對這個版本做了介紹,經過兩個月的努力,今天推出了下一個 Beta 版本 3.0.0 Beta.1。讓我們看一下這個版本相比於之前有什麼改進。

新增特性解讀

Skyline Pruning

查詢計劃正確性和穩定性對於關係型資料庫來說至關重要,3.0.0 Beta.1 對這部分進行了優化,引入一個叫 Skyline Pruning 的框架,通過一些啟發式規則來更快更準確地找到最好的查詢計劃。詳細信息可以參考 這篇設計文檔。

日誌格式統一

日誌是排查程序問題的重要工具,統一且結構化的日誌格式不但有利於用戶理解日誌內容,也有助於通過工具對日誌進行定量分析。3.0.0 Beta.1 版本中對 tidb/pd/tikv 這三個組件的日誌格式進行了統一,詳細格式參見 這篇文檔。

慢查詢相關改進

慢查詢日誌是常用於排查性能問題, 在 3.0.0 Beta.1 之前慢查詢日誌跟其他日誌混合存儲在同個日誌文件,並且格式為自定義的格式,不支持使用 SQL 語句或工具對其進行分析,嚴重影響排查問題的效率。從3.0.0 Beta.1 版本開始 TiDB 將查詢日誌文件輸出到單獨的日誌文件中(默認日誌文件名為 tidb-slow.log),用戶可以系統變數或配置文件進行修改,同時兼容 MySQL 慢查詢日誌格式,支持使用 MySQL 生態分析工具(如 pt-query-digest)對慢查詢日誌進行分析。

除了慢查詢日誌之外,還增加一個虛擬表 INFORMATION_SCHEMA.SLOW_QUERY,可以對慢查詢日誌進行展示和過濾。

關於如何處理慢查詢,我們後續還會專門寫一篇文檔進行介紹。如果你有一些好用的慢查詢處理工具,也歡迎和我們進行交流。

Window Function

MySQL 所支持的 Window Function TiDB 3.0.0 Beta.1 版本已經全都支持,這為 TiDB 向 MySQL 8 兼容邁出了一大步。想體驗功能的可以下載版本嘗鮮,但是不建議在生產中使用,這項功能還需要大量的測試,歡迎大家測試並反饋問題。

熱點調度策略可配置化

熱點調度是保持集群負載均衡的重要手段,但是一些場景下默認的熱點調度顯得不那麼智能,甚至會對集群負載造成影響,所以 3.0.0 Beta.1 中增加了對負載均衡策略的人工干預方法,可以臨時調整調度策略。

優化 Coprocessor 計算執行框架

目前已經完成 TableScan 運算元,單 TableScan 即掃表性能提升 5% ~ 30%,接下來會對 IndexScan、Filter、Aggregation 等運算元以及表達式計算框架進行優化。

TiDB Lightning 性能優化

Lightning 是將大量數據導入 TiDB 的最佳方式,在特定表結構,單表數量,集群已有數量等條件下 1TB 數據導入性能提升 1 倍,時間從 6 小時降低到 3 小時以內,性能優化的腳步不會停,我們期望進一步提升性能,降低時間,期望能優化到 2 小時以內。

易用性相關的特性

  • 使用 /debug/zip HTTP 介面, 可以方便地一鍵獲取當前 TiDB 實例的信息,便於診斷問題。
  • 新增通過 SQL 語句方式管理 pump/drainer 狀態,簡化 pump/drainer 狀態管理,當前僅支持查看狀態。
  • 支持通過配置文件管理髮送 binlog 策略, 豐富 binlog 管理方式。

更多的改進可以參見 Release Notes,除了這些已經完成的特性之外,還有一些正在做的事情,比如 RBAC、Plan Management 都在密集開發中,希望在下一個 Beta 版本或者 RC 版本中能與大家見面。

開源社區

在這個版本的開發過程中,社區依然給我們很有力的支持,比如潘迪同學一直在負責 View 的完善和測試,美團的同學在推進 Plan Management,一些社區同學參與了 TiDB 性能改進 活動。在這裡對各位貢獻者表示由衷的感謝。接下來我們會開展更多的專項開發活動以及一系列面向社區的培訓課程,希望能對大家了解如何做分散式資料庫有幫助。

One More Thing

TiDB DevCon 2019 上對外展示的全新分析類產品 TiFlash 已經完成 Alpha 版本的開發,目前已經在進行內部測試,昨天試用了一下之後,我想說「真香」。

推薦閱讀:

相关文章