華為海外女科學家為您揭祕:GaussDB(for MySQL)雲棧垂直整合的力量有多大?

語言: CN / TW / HK
摘要:讓資料庫效能UP!UP!UP!華為雲GaussDB(for MySQL)是這樣做的

本文分享自華為雲社群《華為海外女科學家為您揭祕:GaussDB(for MySQL)雲棧垂直整合的力量有多大?》,作者:呂漫漪 華為瑞典研究所資料庫Lab首席科學家。

如今雲端計算越來越普及,雲堆疊作為雲端計算的重要服務模式,其關鍵元件之一是事務資料庫服務。在實際業務場景中,應用程式依賴於可擴充套件、高效能的託管資料庫服務,以充分受益於雲平臺。而云資料庫也需要高效利用底層雲基礎架構,以釋放雲規模運營的潛力。

華為雲GaussDB(for MySQL)是華為基於新一代DFV(全稱Data Function Virtualisation,資料功能虛擬化)分散式儲存,採用計算儲存分離架構,完全相容MySQL的高效能企業級雲原生分散式資料庫,以全託管服務形式為網際網路和企業客戶提供專業服務。在本文中,我將解釋常見的客戶工作負載,以及我們如何利用華為雲端計算堆疊的獨特能力來處理這種工作負載。

誰是雲上的客戶?他們的工作負載是什麼?

在國內,人們通常認為只有網際網路初創企業才會使用雲平臺,而MySQL由於在網際網路公司中廣受歡迎,得到眾多國內企業的青睞。但實際上,企業多年前就已經開始擁抱雲概念,並在不斷深入發展中,這也是中國當前的趨勢。MySQL作為世界上最流行的開源資料庫,在所有行業和網際網路公司中都被廣泛採用。

那麼,雲資料庫客戶的典型工作負載是什麼?我們觀察到的兩個特點是:1)資料量越來越大。從一開始就有幾TB到幾十TB的資料量,而且隨著時間的推移,資料量會越來越大。2)簡單的插入/刪除/更新/點查和複雜的分析查詢的混合。此外,偶爾也會有DDL操作。

目前客戶面臨一個很大挑戰,即如何在資料量大的情況下提升資料庫效能。客戶希望在複雜查詢的同時,保持核心事務工作負載的吞吐量。因為企業的業務邏輯性質,查詢通常會比較複雜。幸運的是,MySQL 8.0添加了期待已久的分析行SQL支援,例如windowing function和遞迴CTE。對於非結構化資料,MySQL的JSON支援已經非常受歡迎。

GaussDB(for MySQL)架構概述

GaussDB(for MySQL)的架構構建在多租戶共享的分散式儲存系統之上,目前一個數據庫的最大資料量為128TB,一個主節點用於讀寫負載,最多15個只讀節點用於讀負載。SQL引擎是一個經過深度修改的MySQL 8.0,因此在語法和語義方面與MySQL 100% 相容。計算節點和儲存之間用RDMA網路。

GaussDB(for MySQL)服務使用的儲存系統是一種高可靠的跨AZ雲端儲存。在公有云上,儲存系統可以是一個有幾十或數百個節點的大型群集,橫向擴充套件能力比單租戶線下方案高很多倍。SQL節點將redo log寫到儲存層,頁面在儲存層materialize,此設計顯著減少了更新密集型工作負載的網路通訊。屬於單個數據庫的頁面以slice形式組織,slices分佈在多個儲存節點上,這個資料分佈是就是分散式查詢的基礎。

華為雲GaussDB(for MySQL)架構圖

華為獨特優勢:垂直整合

與傳統的線下資料庫不同,雲資料庫有垂直整合雲棧中所有層的能力。華為作為在雲棧各層領先的提供商,在雲領域中有著獨特的地位,有能力成為行業的領導者。

雲棧中最接近資料庫的是儲存,線下純軟資料庫需要與通用型儲存以及標準檔案系統配合使用,在垂直整合方面,幾乎沒有優化空間。但在雲上,儲存和資料庫的整合能發揮更大的作用,因為雲端儲存在儲存節點方面的可擴充套件性很強,並允許客戶根據資料量和負載動態擴充套件。由於雲端儲存是多租戶之間共享,而且並非所有租戶都會每時每刻有大型掃描,因此我們可以將部分查詢處理解除安裝到儲存層,以實現更高的資源利用率。

  • 通過並行提高效能(並行查詢:PQ)

提高效能的一個通用方法是並行,並行可以在多層上實現。MySQL 8.0的社群版本僅支援單執行緒查詢執行,無法充分利用硬體提供的所有核來執行復雜查詢。我們修改了MySQL執行器,允許使用多個執行緒並行執行單個查詢。與線下解決方案不同的是,雲基礎架構允許我們在計算節點上利用它的垂直擴充套件的能力。最大的計算節點目前有64個核,這也代表了我們通過並行查詢可以實現的最大並行力度。當大部分熱資料可以放在buffer pool裡時,此優化效果最好。並行查詢將在另一篇文章中詳細解釋。

客戶工作負載不僅包含DML,還包含DDL,例如索引建立、更改列的資料型別。雖然大多數DDL在MySQL中都是線上處理的,但有些操作可能會被阻塞,而且使用邏輯複製會擴大堵塞。GaussDB(for MySQL)使用物理複製,避免了這個問題。當表很大時,DDL操作可能需要數小時才能完成。為了支援我們在雲上常見的資料量,優化DDL的必要性是顯而易見的。我們已經有一種創新的方法來處理DDL,這種創新將在後面的文章中探討。

另一個允許更高並行力度的層是儲存層,因為儲存系統可能有數百個節點和數千個核心。GaussDB(for MySQL)使用的這種雲規模的分散式儲存是我們提高查詢效能的一個關鍵基礎,結合並行查詢,有可能實現查詢效能提高100倍以上。

計算層單執行緒查詢執行

計算層和儲存層並行執行

  • 利用雲端儲存提高查詢效能 (運算元下推:NDP)

GaussDB(for MySQL)中的資料以slice形式組織,分佈在多個儲存節點上。我們利用這個資料分佈,把運算元解除安裝到資料所在的儲存節點上,利用當地可用的計算資源執行,無需將資料讀到計算節點中。用資料庫術語,我們將其稱為近資料處理(NDP)或運算元下推。其基本原理是:將查詢處理的部分工作下推到資料所在的儲存節點上,所下推的查詢是資料密集型查詢,例如全表掃描和索引掃描,投影和某些WHERE條件的過濾,以及聚合在儲存層執行,僅將匹配行和列返回到計算節點,而不是完整的頁。除了並行執行之外,因為提取到計算節點的資料量顯著減少,這種方法還減少了網路IO。

此外,NDP運算元下推還允許充分利用快取和儲存介質的本地頻寬,當查詢需要掃描大量資料,且資料不在Innodb緩衝池中時,解除安裝到儲存的效果最好。例如,下圖顯示了NDP運算元下推和並行查詢將TCP-H Q12的執行時間優化了34倍。另一篇文章會單獨介紹NDP的技術細節,並提供全面的效能分析。

未來方向

GaussDB(for MySQL)的設計是為雲而生,此架構具有極其強大和靈活的垂直整合能力,計算和儲存資源解耦並且可以獨立擴充套件,同時在功能上緊密整合,資料庫操作可以在多層中執行。未來,資料庫功能也可以解除安裝到網絡卡和其他雲元件,而不限於計算節點和儲存。

我們相信,雲棧的深度整合是釋放雲資料庫力量的關鍵,華為在實現這一目標方面處於獨特的地位,正如GaussDB(for MySQL)所展示的那樣,未來將引領雲領域方向。

綜上所述,華為雲GaussDB(for MySQL)基於存算分離架構,通過並行查詢PQ和運算元下推NDP等先進技術,極大提升了資料庫效能,實現了雲棧垂直整合力量的最大化,讓算力更快更猛。文章所述功能均已上線,歡迎大家前去華為雲官網體驗:https://www.huaweicloud.com/product/gaussdb_mysql.html,也請繼續關注我們,後續還有更多技術資訊與大家分享!

呂漫漪,現任華為瑞典研究所資料庫Lab首席科學家,雲資料庫歐洲研發團隊的負責人。在資料庫領域有20多年經驗,曾經參與開發電信行業分散式高可用資料庫,在國際知名軟體公司深耕了十年MySQL技術。2020年加入華為,立志於打造世界頂端的企業級雲資料庫。

華為將於2021年9月23-25日在上海世博中心&世博展覽館舉辦華為全聯接2021,以“深耕數字化”為主題,匯聚業界思想領袖、商業精英、技術大咖、先鋒企業、生態夥伴、應用服務商以及開發者等各方,探討如何深入行業場景,把數字技術與行業知識深度結合,真正融入政企的主業務流程,解決核心業務問題,催生體驗提升、效率提升以及模式創新;併發布場景化的產品與解決方案,分享客戶夥伴的最新成果與實踐,構築開放共贏的健康生態。瞭解更多資訊,請訪問官網www.huawei.com/hc2021

 

點選關注,第一時間瞭解華為雲新鮮技術~