Skew Buster是一種針對MPP數據庫運行時數據傾斜引起的性能問題的技術,可以保證在復雜查詢的任意階段,中間數據都可以平均分布,充分利用MPP系統的多節點的并發處理能力。

天津11选5遗漏号top:Skew Buster簡介

當今隨著信息技術,人工智能,和網絡技術的不斷發展,企業在生產經營過程中產生的歷史數據非常容易就達到上百T,甚至P級別,因此依賴單機的scale up能力已經無法滿足。MPP數據庫能夠線性地橫向擴展,因而可以隨著數據量的增加而不斷擴容(scale out),相對于單機,SMP或者Share Disk方案,MPP是最適用于大數據時代的數據倉庫解決構架。大多數的數據庫軟件廠商都提供基于MPP構架的數據倉庫產品,用于為用戶建立企業級數據倉庫EDW(Enterprise Data Warehouse)。但在實踐中, MPP構架的share nothing設計也存在一些其構架自身所帶來的獨特挑戰。其中之一就是運行時數據傾斜問題。

在用戶業務實踐中,一般是由數據庫管理員DBA為每一張表選擇合適的分布鍵,將數據均勻地分布在集群的各個節點上。然而對于復雜的查詢,查詢過程需要分為多個階段,比如在JOIN和GROUPBY的執行過程中,需要產生和使用一些較大的中間結果,或者說中間表,這些運行時產生的中間表很可能會出現數據傾斜,最常見的情形比如兩表Join時,所使用的JOIN列不是DBA指定的分布鍵。多數MPP數據庫都無法處理這樣的查詢,性能表現會急劇下降,無法到達用戶滿意的SLA。

采用專利的skew buster技術,EsgynDB可以保證在復雜查詢的任意階段,中間數據都可以平均分布,充分利用MPP系統的多節點的并發處理能力。因此EsgynDB可以高效地處理很多在其他MPP數據庫中因為運行時數據傾斜而引起的性能問題。

Skew Buster的原理介紹

為了充分發揮MPP的優勢,處理單個查詢時必須并行地使用集群中的每一個節點和每一塊磁盤。超大的數據集被平均分區到各個節點和磁盤,大型復雜查詢因此可以被分割為成百上千的小查詢,每一個小查詢負責處理一小部分數據,這些小查詢并發執行,從而提供極高的整體執行效率。

業界所有的MPP數據庫都可以將表數據哈希平均分布到各個磁盤上。一般情況下,用于哈希分區的數據表列是由DBA精心選擇的,以保證數據的平均分布。如果查詢非常簡單,比如簡單的scan,或者按照分區鍵進行Join時,這種做法已經足夠。但對于復雜查詢,這并無法避免運行時的數據傾斜。

數據傾斜的原因很多,最常見的是“最常用數據”傾斜,當在某個列中,某一個或者幾個值的重復次數特別多時,就會出現這類傾斜。在做表間的Join時,如果Join列不是用于平均分布數據的分區列,則執行計劃需要使用join列對數據進行重新哈希分布,此時就產生了運行時傾斜。某些重復性特別高的值都被哈希至同一個節點/磁盤,這些節點成為執行的熱點,從而極大地降低了整體查詢執行的效率。

下圖演示了一個傾斜的實例:

假設參加Join的兩張表采用128分區,分區函數采用以下公式表達:

Hash(v) = v mode 128

除了v=2以外的所有其他值均平均分布。節點2則成為熱點。

EsgynDB優化器可以利用直方圖發現v=2的傾斜情況,并采用如下策略生成一個合適的執行計劃:

對于參與JOIN的外表,那些沒有傾斜的數據行會被普通的哈希分區函數重新分布數據到所有節點;對于有傾斜的數據行(比如v=2),優化器將采用不同的分區函數來將它們平均分布到集群的所有節點,而不再使用哈希分布,有多種不同的平均分區方法,比如利用random,或者round robin的分區方式來分布這類傾斜的值。

對于內表,根據JOIN列,將那些在外表中存在傾斜的、相應的數據行廣播到所有節點;內表的其他數據行則采用普通的哈希分布。這樣,上例中的v=2將平均分布于所有的計算節點,消除了運行時傾斜。每個節點執行本地的Hash Join,最終將結果匯總,因為每個節點處理的數據量非常平均,從而得到了最佳的執行效率。

采用Skew Buster技術,在用戶的真實案例中,一個原本需要運行80分鐘的查詢減少到只需運行2分鐘。

小結

Skew Buster技術需要一個易于擴展的優化器/執行器,以及精確的直方圖作為基礎和輔助。這正是EsgynDB SQL內核的特長。

數據庫最初發端于1970年代,以處理在線交易為主要目的,其技術特點與后來發展的數據倉庫技術有許多不同。EsgynDB擁有超過20年的研發歷史,和其他主流數據庫一樣,都經過了多年的不斷探索和發展,在原本最初OLTP技術的基礎上不斷添加OLAP需要的技術特性,比如本文所描述的Skew Buster技術。這一切都需要長期的技術和經驗的積淀,而非簡單的將不同產品進行疊加和組合。

此外EsgynDB同最新的Hadoop生態緊密結合,因此EsgynDB是目前業界最先進的、真正能夠提供大數據HTAP解決方案的數據庫產品。

作者:劉明