與MySQL二級分區類似,PolarDB-X支援使用二級分區文法建立含二級分區的分區表。所謂二級分區,就是允許對所有一級分區按指定分區列及分區策略繼續進行二次分區。
因此,使用了二級分區定義的分區表,有以下特性:
它的每個一級分區實際變成一個邏輯分區,對應著一組二級分區的集合;
它的每個二級分區實際變成一個物理分區,對應著DN節點上的一個具體的物理分表。
版本限制
執行個體版本需為5.4.17-16952556及以上。
說明
執行個體版本的規則說明,請參見版本發布說明。
執行個體版本的查看方式,請參見查看和升級執行個體版本。
一級分區與二級分區完全正交
PolarDB-X的一級分區與二級分區均支援使用以下的7種的分區策略:
因此,PolarDB-X的一級分區與二級分區是完全正交的組合關係,即支援使用任意兩種分區策略進行組合,組合分區的數目多達49種。
模板化與非模板化
PolarDB-X二級分區分可為兩大類用法:模板化二級分區與非模板化二級分區。
PolarDB-X二級分區的49種的組合分區,任意一種組合分區均支援使用模板化定義與非模板化定義兩種不同的用法。
模板化二級分區
模板化二級分區,是指各個一級分區之下的二級分區的分區數目及其分區邊界值始終一致。樣本如下:
/*
* 定義LIST-KEY的模板化子分區,
* 一級分區按 LIST COLUMNS 分為3個分區,
* 每個一級分區繼續按 KEY 策略分為4個二級分區,
* 因此,總共會有 12個 物理分區
*/
CREATE TABLE sp_tbl_list_key_tp(
id int,
country varchar(64),
city varchar(64),
order_time datetime not null,
PRIMARY KEY(id)
)
PARTITION BY LIST COLUMNS(country,city)
SUBPARTITION BY KEY(id) SUBPARTITIONS 4
(
PARTITION p1 VALUES IN (('China','Hangzhou')),
PARTITION p2 VALUES IN (('Russian','Moscow')),
PARTITION pd VALUES IN (DEFAULT)
);非模板化二級分區
非模板化二級分區,就是指各個一級分區之下的二級分區的分區數目及其分區邊界值允許不一致。樣本如下:
/*
* 定義LIST-KEY的非模板化子分區,
* 一級分區按 LIST COLUMNS 分為3個分區,
* 每個一級分區繼續按 KEY 策略進行二級分區,
* 各一級分區的二級分區數目分別定義為 2,3,4,
* 因此,總共會有 9 個 物理分區
*/
CREATE TABLE sp_tbl_list_key_ntp(
id int,
country varchar(64),
city varchar(64),
order_time datetime not null,
PRIMARY KEY(id)
)
PARTITION BY LIST COLUMNS(country,city)
SUBPARTITION BY KEY(id)
(
PARTITION p1 VALUES IN (('China','Hangzhou')) SUBPARTITIONS 2,
PARTITION p2 VALUES IN (('Russian','Moscow')) SUBPARTITIONS 3,
PARTITION pd VALUES IN (DEFAULT) SUBPARTITIONS 4
);