摘要:經過半年時間,個版本,今天版本正式發布。目前已經有大量的用戶在線上使用,這些用戶的數據量在不斷增加業務也在不斷演進。比如盡可能簡化部署升級擴容方式,盡可能容易的定位系統中出現的異常狀態。同時功能也更加豐富,支持自動部署組件支持啟用。
去年十月份的時候,我們發布了 TiDB 1.0 版本,為此我們日夜兼程奮斗了兩年半時間,我們認為 1.0 版本達到了可在生產環境中使用的程度。在接下來的六個月中,我們一方面維護 1.0 版本的穩定性并且增加必要的新特性,另一方面馬不停蹄的開發 2.0 版本。經過半年時間,6 個 RC 版本,今天 TiDB 2.0 GA 版本正式發布。
2.0 版本規劃在 2.0 版本的規劃階段,我們對“這個版本需要做什么”進行了深入思考,我們根據現有用戶的情況、技術發展趨勢以及社區的聲音,認為 2.0 版本需要聚焦在以下幾點:
保證 TiDB 的穩定性以及正確性。這兩點是一個數據庫軟件的基礎功能,作為業務的基石,任何一點抖動或者錯誤都可能對業務造成巨大的影響。目前已經有大量的用戶在線上使用 TiDB,這些用戶的數據量在不斷增加、業務也在不斷演進。我們非常關注 TiDB 集群如何保持長期穩定運行、如何減小系統的抖動、如何進行智能的調度,為此做了大量的調研和分析。
提升 TiDB 在大數據量下的查詢性能。從我們接觸下來的用戶來看,很多客戶都有少則上百 GB,多則上百 TB 的數據,一方面數據會持續增加,另一方面也希望能對這些數據做實時的查詢。所以如果能提升大數據量下的查詢性能,對用戶會很有幫助。
優化 TiDB 的易用性和可維護性。TiDB 整套系統的復雜性比較高,運維及使用的難度要大于單機數據庫,所以我們希望能提供盡可能方便的方案幫助用戶使用 TiDB。比如盡可能簡化部署、升級、擴容方式,盡可能容易的定位系統中出現的異常狀態。
圍繞上面三點原則,我們做了大量的改進,一些是對外可見(如 OLAP 性能的顯著提升、監控項的大量增加以及運維工具的各項優化),還有更多的改進是隱藏在數據庫背后,默默的提升整個數據庫的穩定性以及正確性。
正確性和穩定性在 1.0 版本發布之后,我們開始構建和完善自動化測試平臺 Schrodinger,徹底告別了之前靠手工部署集群測試的方式。同時我們也新增了非常多的測試用例,做到測試從最底層 RocksDB,到 Raft,再到 Transaction,然后是 SQL 都能覆蓋。
在 Chaos 測試上面,我們引入了更多的錯誤注入工具,例如使用 systemtap 對 I/O 進行 delay 等,也在代碼特定的業務的邏輯進行錯誤注入測試,充分保證 TiDB 在異常條件下面也能穩定運行。
之前我們做了很多 TLA+ 的論證工作,也有一些簡單的測試,1.0 之后我們開始使用 TLA+ 系統進行論證,保證我們的實現在設計上面都是正確的。
在存儲引擎方面,為了提升大規模集群的穩定性和性能,我們優化了 Raft 的流程,引入 Region Merge、Raft Learner 等新特性;優化熱點調度機制,統計更多的信息,并根據這些信息做更合理的調度;優化 RocksDB 的性能,使用 DeleteFilesInRanges 等特性,提升空間回收效率,降低磁盤負載,以及更加平滑地使用磁盤資源等等。
OLAP 性能優化在 2.0 版本中,我們重構了 SQL 優化器和執行引擎,希望能盡可能快的選擇最優查詢計劃并且盡可能高效地執行查詢計劃。
1.0 版本已經從基于規則的查詢優化器轉向基于代價的查詢優化器,但是還不夠完善,在 2.0 版本中,我們一方面優化統計信息的精確度以及更新及時程度,另一方面提升 SQL 優化器的能力,對查詢代價的估算更加精準、對復雜過濾條件的分析更加細致、對關聯子查詢的處理更加優雅、對物理算子的選擇更加靈活準確。
在這一版本中,SQL 執行引擎引入新的內部數據表示方式 --- Chunk,一個結構中保存一批數據而不僅是一行數據,同一列的數據在內存中連續存放,使得內存使用更緊湊,這樣帶來了幾點好處:1. 顯著減小了內存消耗; 2. 批量分配內存,減小了 GC 開銷;3. 算子之間可以對數據進行批量傳遞,減小調用開銷;4. 在某些場景下,可以進行向量計算以及減小 CPU 的 Cache Miss 的情況。
完成上述兩項改動之后,TiDB 在 OLAP 場景下的性能有了大幅的質的提升,從 TPC-H 的對比結果https://github.com/pingcap/docs-cn/blob/master/benchmark/tpch.md 來看,所有的 Query 在 2.0 中都運行得更快,一些 Query 大多數都有幾倍甚至數量級的提升,特別是一些 1.0 中跑不出結果的 Query 在 2.0 中都能順利執行。
易用性和可運維性為了讓 TiDB 更容易被安裝和使用,監控、運維、工具方面我們也做了諸多優化。
在監控方面,增加了過百個監控項,同時通過 HTTP 接口、SQL 語句等方式暴露出一些運行時信息,用于系統調優或者是定位系統中存在的問題。
在運維方面,我們運維工具做了優化,簡化操作流程,降低操作復雜度及操作過程對于線上的影響。同時功能也更加豐富,支持自動部署 Binlog 組件、支持啟用 TLS。
版本升級從 TiDB 1.0 到 2.0 可以進行滾動升級,具體步驟可以參考 這篇文檔。
One more thing我們也同時發布了 TiSpark 1.0 GA 版本,了解一下?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/17737.html
摘要:年月日,發布版。相比版本,該版本對系統穩定性性能兼容性易用性做了大量改進。 2018 年 11 月 30 日,TiDB 發布 2.1 GA 版。相比 2.0 版本,該版本對系統穩定性、性能、兼容性、易用性做了大量改進。 TiDB SQL 優化器 優化 Index Join 選擇范圍,提升執行性能 優化 Index Join 外表選擇,使用估算的行數較少的表作為外表 擴大 Join H...
閱讀 3477·2021-09-02 09:53
閱讀 1802·2021-08-26 14:13
閱讀 2762·2019-08-30 15:44
閱讀 1322·2019-08-30 14:03
閱讀 1970·2019-08-26 13:42
閱讀 3021·2019-08-26 12:21
閱讀 1311·2019-08-26 11:54
閱讀 1904·2019-08-26 10:46