O subparticionamento, também chamado de particionamento composto, divide cada partição de uma tabela do PolarDB-X em subpartições menores. Cada partição funciona como uma unidade lógica, e cada subpartição mapeia para uma tabela física em um nó de dados.
Assim como o MySQL, o PolarDB-X oferece suporte ao subparticionamento (ou particionamento composto), que fragmenta cada partição de uma tabela particionada em subpartições menores. Uma tabela particionada com subpartições apresenta as seguintes características:
Cada partição torna-se uma partição lógica, composta por um conjunto de subpartições.
Cada subpartição atua como uma partição física, correspondendo a uma tabela física específica em um nó de dados.
Versões compatíveis
A versão da instância deve ser 5.4.17-16952556 ou posterior.
Para obter informações sobre o versionamento de instâncias, consulte Notas de versão.
Para saber como visualizar a versão de uma instância do PolarDB-X, consulte Visualize e atualize a versão de uma instância.
Relações ortogonais entre partições e subpartições
O PolarDB-X suporta sete políticas de particionamento tanto para partições quanto para subpartições:
As partições e subpartições do PolarDB-X são totalmente ortogonais. Você pode combinar livremente quaisquer duas dessas políticas, resultando em até 49 políticas de particionamento composto.
Subparticionamento com modelo e sem modelo
O PolarDB-X oferece dois modos para definir subpartições. Todas as 49 políticas de particionamento composto do PolarDB-X suportam ambos os modos.
Subparticionamento com modelo
No subparticionamento com modelo, todas as partições compartilham a mesma quantidade de subpartições e os mesmos valores de limite. Defina a estrutura de subpartições uma única vez na cláusula SUBPARTITION BY; ela se aplica automaticamente a todas as partições.
O exemplo a seguir cria três partições LIST COLUMNS, cada uma com quatro subpartições KEY. Total de partições físicas: 3 × 4 = 12.
/*
* Templated subpartitioning: LIST COLUMNS + KEY.
* Three partitions x four subpartitions = 12 physical partitions.
*/
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)
);
Adicione SUBPARTITIONS N após SUBPARTITION BY para estabelecer uma contagem uniforme de subpartições para todas as partições.
Subparticionamento sem modelo
No subparticionamento sem modelo, cada partição especifica sua própria quantidade de subpartições e valores de limite. Utilize este modo quando as partições exigirem números diferentes de subpartições ou valores de limite distintos.
O exemplo abaixo cria três partições LIST COLUMNS com 2, 3 e 4 subpartições KEY, respectivamente. Total de partições físicas: 2 + 3 + 4 = 9.
/*
* Non-templated subpartitioning: LIST COLUMNS + KEY.
* p1: 2 subpartitions, p2: 3 subpartitions, pd: 4 subpartitions = 9 physical partitions.
*/
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
);
Inclua SUBPARTITIONS N em cada cláusula PARTITION individual para configurar uma contagem de subpartições específica por partição.