国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TiDB 2.1: Battle-Tested for an Unpredictable World

jindong / 2310人閱讀

摘要:從版發布到現在的半年多時間,開源社區新增了位,其中杜川成為了,他已經貢獻了次,還有一些活躍的有希望成為下一批。在這里我們對社區貢獻者表示由衷的感謝,希望更多志同道合的人能加入進來,也希望大家在這個開源社區能夠有所收獲

TiDB 是由 PingCAP 開發的分布式關系型數據庫,今天我們很高興地推出 TiDB 2.1 正式版,提供更豐富的功能、更好的性能以及更高的可靠性。

回顧 2.0 版本

今年 4 月份我們發布了 TiDB 2.0 版本,提升了穩定性、性能以及可運維性,這個版本在接下來的半年中得到了廣泛的關注和使用。

迄今為止 TiDB 已經在 數百家用戶 的生產環境中穩定運行,涉及互聯網、游戲、金融、保險、制造業、銀行、證券等多個行業,最大集群包含數百個節點及數百 TB 數據,業務場景包含純 OLTP、純 OLAP 以及混合負載。另外,既有使用 TiDB 當做關系數據庫的場景,也有只用 TiKV 作為分布式 Key Value 存儲的場景。

這幾個月,在這些場景中,我們親歷了跨機房容災需求、親歷了幾十萬級別的高吞吐業務、親歷了雙十一的流量激增、親歷了高并發點查、高并發寫入與上百行復雜 SQL 的混合負載、見到過多次的硬件/網絡故障、見到過操作系統內核/編譯器的 Bug。

簡而言之,我們的世界充滿了未知,而分布式關系型數據庫這樣一種應用廣泛、功能豐富且非常關鍵的基礎軟件,最大的困難就是這些“未知”。在 2.1 版本中,我們引入了不少新的特性來抵御這些未知,適配各種復雜的場景,提升性能和穩定性,幫助我們的用戶更好地支撐復雜的業務。

新特性 更全面的 Optimizer

在 2.1 版本中,我們對 TiDB 的 Cost-based Optimizer 做了改進,希望這個優化器能夠處理各種復雜的 Query,盡量少的需要人工介入去處理慢 SQL。例如對 Index Join 選擇索引、外表的優化,對關聯子查詢的優化,顯著地提升了復雜 SQL 的查詢效率。

當然,除了自動的查詢優化之外,2.1 也增加了更多的手動干預機制,比如對 Join 算子的 Hint、Update/Delete 語句的 Hint。用戶可以在優化器沒有指定合適的計劃時,手動干預結果或者是用來確保查詢計劃穩定。

更強大的執行引擎

在 2.1 版本中,我們對部分物理算子的執行效率進行了優化,特別是對 Hash Aggregation 和 Projection 這兩個算子進行了并行化改造,另外重構了聚合算子的運行框架,支持向量化計算。

得益于這些優化,在 TPC-H 這種 OLAP 的測試集上,2.1 比 2.0 版本有了顯著的性能提升,讓 2.1 版本更好的面對 HTAP 應用場景。

Raft 新特性

在 2.1 版本中,我們引入了 Raft PreVote、Raft Learner、Raft Region Merge 三個新特性:

PreVote 是在 Raft Group Member 發起投票之前,預先檢查是否能被其他成員所支持,以避免集群中被網絡隔離的節點重新接入集群中的時候引發性能抖動,提升集群穩定性。2.1 版本已經支持 PreVote 功能,并默認打開。

Learner 是只同步數據不參與投票的 Raft Group Member。在新加副本的時候,首先增加 Learner 副本,以避免添加副本過程中,部分 TiKV 節點故障引發丟失多數副本的情況發生,以提升集群的安全性。2.1 版本已經支持 Learner 功能,并默認打開。

Region Merge 用于將多個過小的 Region 合并為一個大的 Region,降低集群的管理成本,對于長期運行的集群以及數據規模較大的集群的性能、穩定性有幫助。2.1 版本已經支持 Region Merge 功能,尚未默認打開。

這些新特性的引入,有助于提升存儲集群尤其是大規模集群的穩定性和性能。

自動更新統計信息

統計信息的及時性對查詢計劃的正確性非常重要。在 2.1 版本中,我們提供了基于 Query Feedback 的動態增量更新機制。

在制定查詢計劃時,會根據現有的統計信息估算出需要處理的數據量;在執行查詢計劃時,會統計出真實處理的數據量。TiDB 會根據這兩個值之間的差距來更新統計信息,包括直方圖和 CM-Sketch。在我們的測試中,對于一個完全沒有統計信息的表,經過十輪左右的更新,可以達到統計信息基本穩定的狀態。這對于維持正確的查詢計劃非常重要。

除了動態增量更新之外,我們對自動全量 Analyze 也提供了更多支持,可以通過 系統變量 指定做自動 Analyze 的時間段。

并行 DDL

TiDB 所有的 DDL 操作都是 Online 進行,不過在 2.0 以及之前的版本中,所有的 DDL 操作都是串行執行,即使 DDL 所操作的表之間沒有關聯。比如在對 A 表 Add Index 時候,想創建一個 B 表,需要等待 Add Index 操作結束。這在一些場景下對用戶使用造成了困擾。

在 2.1 版本中,我們對 DDL 流程進行拆分,將 Add Index 操作和其他的 DDL 操作的處理分開。由于在 TiDB 的 DDL 操作中,只有 Add Index 操作需要去回填數據,耗時較長,其他的 DDL 操作正常情況下都可以在秒級別完成,所以經過這個拆分,可以保證大多數 DDL 操作能夠不需要等待,直接執行。

Explain 和 Explain Analyze

Explain 對于理解查詢計劃至關重要,2.1 之前的版本,TiDB 追隨 MySQL 的 Explain 輸出格式來展示查詢計劃。但是當 SQL 比較復雜時,MySQL 的格式并不利于展示算子之間的層級關系,不利于用戶定位問題。

2.1 版本中,我們使用縮進來展示算子之間的層級關系,對每個算子的詳細信息也做了優化,希望整個查詢計劃一目了然,幫助用戶盡快定位問題。這篇文檔 可以幫助用戶了解 TiDB 的查詢計劃。

用戶除了通過 Explain 語句查看查詢計劃之外,在 2.1 版本中還可以通過 Explain Analyze 語句查看語句的運行時信息,包括每個算子運行時的處理時間以及處理的數據量。這樣可以通過實際的運行結果,拿到更加精確的信息。

熱點調度

熱點是分布式系統最大的敵人之一,并且用戶的業務場景復雜多變,讓熱點問題捉摸不定,也是最狡猾的敵人。2.1 版本中,我們一方面增強熱點檢測能力,盡可能詳細地統計系統負載,更快的發現熱點;另一方面優化熱點調度策略,用盡可能小的代價,盡快地打散熱點。同時我們也提供了手動分裂 Region 的接口,讓用戶在特殊場景下將單點瓶頸手動分裂開,再由 PD 進行負載均衡。

高效的 GC 機制

2.1 版本對 GC(垃圾回收) 模塊進行優化。一方面減少對線上的寫入的影響,另一方面加快了空間回收速度。在內部測試場景中,刪除一個 1TB 的表,新的 GC 機制能夠在 10 秒內回收 99% 左右的空間。

更好的性能 OLTP

我們針對 OLTP 場景中,點查占多數的特點進行了針對性的優化。當通過 Unique Key 或者 Primary Key 進行數據訪問時,在優化器和執行引擎中都做了改進,使得語句的執行效率更高,通過 2.1 和 2.0 版本的 Sysbench 對比 可以看到,點查性能提升 50%。

OLAP

發布 2.0 的時候,我們同時發布了在 TPC-H Scale 50 的場景中 2.0 和 1.0 的對比結果。其中大多數 Query 都有數量級的提升,部分 Query 在 1.0 中跑不出結果,在 2.0 中可以順利運行。不過對于 Query17 和 Query18,運行時間依然很長。

我們在相同的場景下,對 2.1 和 2.0 進行了 對比測試。從下圖可以看到(縱坐標是 Query 的響應時間,越低越好),之前的兩個慢 Query 的運行時間大幅縮短,其他的 Query 也有一定程度的提升。這些提升一方面得益于查詢優化器以及執行引擎的改進,另一方面 得益于 TiKV 對連續數據掃描的性能優化。

完善的生態工具

為了讓用戶更方便的使用 TiDB,我們提供了三個工具:

TiDB Lightning 用于將全量數據導入到 TiDB 中,這個工具可以提升全量數據導入速度,目前內部測試場景中,一小時可以導入 100GB 數據。

TiDB Binlog 用于將 TiDB 中的數據更新實時同步到下游系統中,可以用于做主從集群同步或者是將 TiDB 中的數據同步回 MySQL。

TiDB DM(Data-Migration)用于將 MySQL/MariaDB 中的數據通過 Binlog 實時同步到 TiDB 集群中,并且提供 Binlog 數據轉換功能,可以將 Binlog 中的表/庫名稱進行修改,或者是對數據內容本身做修改和裁剪。

上述三個工具可以將 TiDB 和周邊的系統打通,既能將數據同步進 TiDB,又可以將數據同步出來。所以無論是遷移、回退還是做數據熱備,都有完整的解決方案。

Open Source Community

我們相信戰勝“未知”最好的武器就是社區的力量,基礎軟件需要堅定地走開源路線。為了讓社區更深入的了解 TiDB 的技術細節并且更好地參與到項目中來,我們今年已經完成超過 20 篇源碼閱讀文章,項目的設計文檔(TiDB 和 TiKV)已經在 GitHub 上面公開出來,項目的開發過程也盡量通過 Github Issue/Project 向社區展示。一些 Feature 設計方案的討論也會通過在線視頻會議的方式方便社區參與進來,這里 可以看到會議安排。

從 TiDB 2.0 版發布到現在的半年多時間,TiDB 開源社區新增了 87 位 Contributor,其中 杜川 成為了 TiDB Committer,他已經貢獻了 76 次 PR,還有一些活躍的 Contributor 有希望成為下一批 Committer。

在這里我們對社區貢獻者表示由衷的感謝,希望更多志同道合的人能加入進來,也希望大家在 TiDB 這個開源社區能夠有所收獲!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17838.html

相關文章

  • 美團點評攜手 PingCAP 開啟新一代數據庫深度實踐之旅

    摘要:一背景和現狀在美團,基于構建的傳統關系型數據庫服務已經難于支撐公司業務的爆發式增長,促使我們去探索更合理的數據存儲方案和實踐新的運維方式。隨著近一兩年來分布式數據庫大放異彩,美團團隊聯合架構存儲團隊,于年初啟動了分布式數據庫項目。 一、背景和現狀 在美團,基于 MySQL 構建的傳統關系型數據庫服務已經難于支撐公司業務的爆發式增長,促使我們去探索更合理的數據存儲方案和實踐新的運維方式。...

    gclove 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<