天天看點

《Greenplum企業應用實戰》一3.3 資料分布

本節書摘來自華章出版社《greenplum企業應用實戰》一書中的第3章,第3.3節,作者 何勇 陳曉峰,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

由于greenplum是分布式的架構,為了充分展現分布式架構的優勢,我們有必要了解資料是如何分散在各個資料節點上的,有必要了解資料傾斜對資料加載、資料分析、資料導出的影響。

我們來簡單做個測試,首先,利用generate_series和repeat函數生成一些測試資料,代碼如下:

500萬資料分散在6個資料節點,利用下面這個sql可以查詢資料的分布情況(sql在後面5.8.4中将會介紹):

上述sql中的group by 1,其中1代表select後面的第一個字段,即gp_segment_id。

接下來将通過實驗來測試在分布鍵不同的情況下資料加載的速度。

(1)資料傾斜狀态下的資料加載

1)測試資料準備,将測試資料導出:

2)建立測試表,以flag字段為分布鍵:

3)執行資料導入:

4)由于分布鍵flag取值隻有0和1,是以資料隻能分散到兩個資料節點,如下:

5)由于資料分布在2和3節點,對應primary segment在dell3、mirror節點dell4上,可通過以下sql查詢gp_segment_configuration獲得:

testdb=# select dbid,content,role,port,hostname from gp_segment_configuration

在執行資料導入期間,greenplum performance monitor頁面可監控到:僅有dell3和dell4兩台伺服器有磁盤和cpu消耗,如圖3-7所示。

《Greenplum企業應用實戰》一3.3 資料分布

greenplum performance monitor的安裝部署,将在10.2.1—gpmonitor介紹中介紹。

(2)資料分布均勻狀态下的資料加載

1)建立測試表,以id字段為分布鍵:

2)執行資料導入:

3)由于分布鍵id取值順序分布,是以資料可均勻分散至所有資料節點,如下:

在執行資料導入期間,greenplum performance monitor頁面可監控到:3台伺服器的所有節點都有磁盤和cpu消耗,可見,在資料均勻的情況下,可以利用更多的機器進行工作,性能也比較高,如圖3-8所示。

《Greenplum企業應用實戰》一3.3 資料分布

(1)資料傾斜狀态下的資料查詢

由于資料分布在2和3節點上,即對應dell3和相應的mirror節點dell4上,但是資料查詢隻需要primary節點,故隻有dell3節點有磁盤消耗,如圖3-9所示。

《Greenplum企業應用實戰》一3.3 資料分布

(2)資料分布均勻狀态下的資料查詢

由于資料分布在所有節點上,故所有伺服器都有磁盤消耗,進而大大提升了資料查詢的性能。

繼續閱讀