數(shù)據(jù)分布策略
更新時間:
AnalyticDB PostgreSQL版支持三種數(shù)據(jù)在節(jié)點間的分布方式,分別是哈希(HASH)分布、隨機(RANDOMLY)分布、復制(REPLICATED)分布。
語法
CREATE TABLE table_name (...) [ DISTRIBUTED BY (column [,..] ) | DISTRIBUTED RANDOMLY | DISTRIBUTED REPLICATED ]
哈希分布
DISTRIBUTED BY (column, [ ... ])
數(shù)據(jù)將根據(jù)分布列的哈希值將各個行分布到指定計算節(jié)點上,相同的哈希值會始終散列到同一計算節(jié)點。為保障數(shù)據(jù)可以均勻分布在各個節(jié)點上,建議您選擇唯一鍵(例如主鍵)作為分布鍵。
AnalyticDB PostgreSQL版的默認分布策略為哈希分布,如果建表時未指定DISTRIBUTED子句,系統(tǒng)會選擇主鍵或表的第一個合適的列作為分布鍵。如果表中沒有合適的列,系統(tǒng)將會使用隨機分布策略。
建表語句示例如下:
CREATETABLEproducts
(namevarchar(40),
prod_idinteger,
supplier_idinteger)DISTRIBUTEDBY(prod_id);
隨機分布
DISTRIBUTED RANDOMLY
系統(tǒng)會按循環(huán)的方式將數(shù)據(jù)分布到各個計算節(jié)點上,但是相同值的數(shù)據(jù)可能不會分布到同一個計算節(jié)點。
隨機分布僅建議您在沒有合適的列作為分布列時使用。
建表語句示例如下:
CREATETABLErandom_stuff(thingstext,
doodadstext,
etctext)DISTRIBUTEDRANDOMLY;
復制分布
DISTRIBUTED REPLICATED
系統(tǒng)會在每個計算節(jié)點都保存一份表的全量數(shù)據(jù)。
如果數(shù)據(jù)庫中存在大表與小表join的場景,您可以將足夠小的表設置為復制分布來提升性能。
建表語句示例如下:
CREATETABLEreplicated_stuff(thingstext,
doodadstext,
etctext)DISTRIBUTEDREPLICATED;
創(chuàng)建了一個復制(Replicated)分布的表,每個 Segment 數(shù)據(jù)節(jié)點都存儲有一個全量的表數(shù)據(jù)。
文檔內(nèi)容是否對您有幫助?