Todos os produtos
Search
Central de documentação

PolarDB:Tipos de particionamento do PolarDB-X

Última atualização: Jul 02, 2026

O PolarDB-X oferece suporte aos tipos de particionamento HASH, KEY, RANGE, LIST e CO_HASH para controlar a distribuição de dados entre as partições.

Tipos de particionamento

O PolarDB-X é compatível com os seguintes tipos de particionamento:

  • Particionamento HASH

    • HASH (sintaxe compatível com MySQL)

    • KEY (sintaxe compatível com MySQL)

  • Particionamento RANGE

    • RANGE (sintaxe compatível com MySQL)

    • RANGE COLUMNS (sintaxe compatível com MySQL)

  • Particionamento LIST

    • LIST (sintaxe compatível com MySQL)

    • LIST COLUMNS (sintaxe compatível com MySQL)

  • Particionamento específico para cenários

    CO_HASH (sintaxe específica do PolarDB-X)

Particionamento HASH

O particionamento HASH utiliza um algoritmo de hash consistente para calcular valores de hash a partir de colunas de chave de partição ou expressões de funções de particionamento e rotear os dados conforme o resultado. Essa categoria inclui o KEY partitioning (baseado em coluna) e o HASH partitioning (baseado em função).

Comparação entre particionamento KEY e particionamento HASH

Tipo de particionamento

Chave de partição suportada

Suporte a funções de particionamento

Sintaxe da instrução

Limites

Política de roteamento (consulta pontual)

Particionamento KEY (padrão)

Chave de partição de coluna única

Não

PARTITION BY KEY(c1)

  • Não há suporte para divisão de partição quente.

  • Os dados são roteados para partições com base em uma coluna de chave de partição.

  1. O algoritmo de hash consistente calcula o valor de hash c1_hash com base no valor da coluna c1.

  2. O sistema roteia os dados para diferentes partições conforme o valor de c1_hash.

Chave de partição vetorial

Não

PARTITION BY KEY(c1,c2,...,cn)

  • Há suporte para divisão de partição quente.

  • Por padrão, o roteamento usa apenas a coluna c1. As demais colunas permitem a divisão de partição quente.

  • n representa a quantidade de colunas de chave de partição usadas simultaneamente.

  • O limite máximo é de cinco colunas de chave de partição.

  1. Os valores das colunas de chave de partição (c1,c2,...,cn) funcionam como uma chave de partição vetorial para calcular os hashes de cada coluna do vetor mediante o algoritmo de hash consistente. Obtém-se assim um vetor de hashes (c1_hash,c2_hash,...,cn_hash) correspondente à chave de partição vetorial.

  2. O vetor de hashes (c1_hash,c2_hash,...,cn_hash) direciona os dados para as partições por intervalo.

Hash

Chave de partição de coluna única

Não

PARTITION BY HASH(c1)

  • Não há suporte para divisão de partição quente.

  • Os dados são roteados para partições com base em uma coluna de chave de partição.

  • Apenas as seguintes funções de particionamento têm suporte:

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

A política de roteamento de PARTITION BY HASH(c1) é idêntica à de PARTITION BY KEY(c1).

Sim

PARTITION BY HASH(YEAR(c1))

  1. A função YEAR calcula o valor do ano com base no valor da coluna c1.

  2. O algoritmo de hash consistente gera o valor de hash year_hash a partir do valor do ano.

  3. O sistema roteia os dados para as partições conforme o valor de year_hash.

Chave de partição vetorial

Não

PARTITIONBY HASH(c1,c2,...,cn)

  • Não há suporte para divisão de partição quente.

  • Após a criação da tabela, o roteamento considera todas as colunas de chave de partição.

  • O limite máximo é de cinco colunas de chave de partição.

  1. Os valores das colunas de chave de partição (c1,c2,...,cn) atuam como chave de partição vetorial para calcular os hashes de cada coluna do vetor usando o algoritmo de hash consistente. Isso resulta em um vetor de hashes correspondente à chave de partição vetorial.

  2. Os valores de hash dos vetores determinam o roteamento dos dados para as partições.

Particionamento RANGE

No particionamento RANGE, a comparação dos valores da chave de partição ou dos resultados de funções de particionamento com limites predefinidos define o roteamento dos dados. Esta modalidade abrange o RANGE COLUMNS partitioning (baseado em coluna) e o RANGE partitioning (baseado em função).

Comparação entre particionamento RANGE e particionamento RANGE COLUMNS

Tipo de particionamento

Chave de partição suportada

Suporte a funções de particionamento

Sintaxe da instrução

Limites

Política de roteamento (consulta pontual)

Range Columns

Chave de partição de coluna única e chave de partição vetorial

Não

PARTITION BY RANGE COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES LESS THAN (1,10,...,1000), PARTITION p2 VALUES LESS THAN (2,20,...,2000) ...)

Permite divisão de partição quente. Caso muitas linhas compartilhem o mesmo valor de c1 (por exemplo, 88), a divisão pode ocorrer por c2.

  1. Os valores das colunas de chave de partição (c1,c2,...,cn) servem como chave de partição vetorial.

  2. Essa chave de partição vetorial define a partição de destino dos dados através do algoritmo de busca binária.

Range

Chave de partição de coluna única

Sim

PARTITION BY RANGE(YEAR(c1)) ( PARTITION p1 VALUES LESS THAN (2019), PARTITION p2 VALUES LESS THAN (2021) ...)

  • Não há suporte para divisão de partição quente.

  • Somente as funções de particionamento listadas abaixo são aceitas:

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

  1. A função YEAR determina o valor do ano a partir do conteúdo da coluna c1.

  2. O valor do ano indica a partição de destino dos dados mediante o algoritmo de busca binária.

Particionamento LIST

O funcionamento do particionamento LIST assemelha-se ao do particionamento RANGE, porém a correspondência de valores ocorre contra listas discretas em vez de intervalos. Compreende o LIST COLUMNS partitioning (baseado em coluna) e o LIST partitioning (baseado em função).

Comparação entre particionamento LIST e particionamento LIST COLUMNS

Tipo de particionamento

Chave de partição suportada

Suporte a funções de particionamento

Sintaxe da instrução

Limites

Política de roteamento (consulta pontual)

List Columns

Chave de partição de coluna única e chave de partição vetorial

Não

PARTITION BY LIST COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES IN ((1,10,...,1000),(2,20,...,2000) ), PARTITION p2 VALUES IN ((3,30,...,3000),(3,30,...,3000) ), ...)

Não há suporte para divisão de partição quente.

  1. Os valores das colunas de chave de partição (c1,c2,...,cn) constituem uma chave de partição vetorial.

  2. Tal chave de partição vetorial identifica a partição de destino dos dados usando o algoritmo de busca binária.

List

Chave de partição de coluna única

Sim

PARTITION BY LIST(YEAR(c1)) ( PARTITION p1 VALUES IN (2018,2019), PARTITION p2 VALUES IN (2020,2021) ...)

Não há suporte para divisão de partição quente.

Particionamento COHASH

O PolarDB-X também disponibiliza o particionamento COHASH para tabelas que exigem particionamento horizontal em várias colunas com valores semelhantes.

A tabela a seguir compara o COHASH com os particionamentos HASH e KEY.

Comparação entre particionamento COHASH, particionamento HASH e particionamento KEY

Item

CO_HASH

KEY

Hash

Sintaxe da instrução

PARTITION BY CO_HASH(c1, c2) PARTITOINS 8

PARTITION BY KEY(c1, c2) PARTITOINS 8

PARTITION BY HASH(c1, c2) PARTITOINS 8

Chave de partição de coluna única

Sem suporte

Suportado

Suportado

Chave de partição vetorial

Suportado

Suportado

Suportado

Funções de particionamento em colunas de chave de partição vetorial

Suportado. Exemplo:

PARTITION BY CO_HASH(
-- Partition the table by the last four characters of the c1 column values.
RIGHT(c1, 4),
-- Partition the table by the last four characters of the c2 column values.
RIGHT(c2, 4))
PARTITOINS 8

Sem suporte

Sem suporte

Relação entre colunas de chave de partição

Os valores das colunas devem ser semelhantes. É necessário manter similaridade entre as colunas de chave de partição. Exemplos:

  • Os valores das colunas c1 e c2 são sempre idênticos

  • CO_HASH(c1, c2) é adequado.

  • Os últimos quatro caracteres dos valores das colunas c1 e c2 são sempre iguais.

  • CO_HASH(RIGHT(c1,4), RIGHT(c2,4)) é apropriado.

Semelhante a um prefixo de índice composto.

Semelhante a um prefixo de índice composto.

Consulta equivalente para colunas de chave de partição com prefixos, pruning de partição e exemplos

Suportado. Exemplos:

  • c1='x': Há suporte para pruning de partição e as consultas são roteadas para uma única partição.

  • c1='x' e c2='y': O pruning de partição é suportado e as consultas vão para zero ou uma única partição. Se a partição de roteamento para c1='x' e c2='y' for diferente, nenhuma partição será retornada.

Suportado. Exemplos:

  • c1='x': O pruning de partição funciona e as consultas são direcionadas a um ou mais shards. Ao executar divisão de partição quente no valor x, múltiplas partições são retornadas.

  • c1='x' e c2='y': Pruning de partição disponível, roteando consultas para uma única partição.

Sem suporte. O pruning de partição exige condições equivalentes em todas as colunas de chave de partição. Exemplos:

  • c1='x': Sem pruning de partição. Todas as partições são verificadas.

  • c1='x' e c2='y': Pruning de partição suportado, com consultas roteadas para uma única partição.

Consulta equivalente para colunas de chave de partição sem prefixos, pruning de partição e exemplos

Suportado. Condições equivalentes para todas as colunas de chave de partição ativam o pruning de partição. Exemplos:

  • c2='x': Pruning de partição ativo, roteando consultas para uma única partição.

  • c1='x' ou c2='y': Pruning de partição suportado, direcionando consultas para uma ou duas partições. Caso as partições de roteamento para c1='x' e c2='y' coincidam, apenas uma partição é retornada. Caso contrário, duas partições são verificadas.

Sem suporte. Na ausência de condições de prefixo, todas as partições são verificadas. Exemplos:

  • c2='x': Varredura completa de todas as partições.

  • c1='x' ou c2='y': Varredura completa de todas as partições.

Sem suporte. Sem condições de prefixo, ocorre varredura em todas as partições. Exemplos:

  • c2='x': Varredura completa de todas as partições.

  • c1='x' ou c2='y': Varredura completa de todas as partições.

Consulta por intervalo

Sem suporte. Todas as partições são verificadas.

Sem suporte. Todas as partições são verificadas.

Sem suporte. Todas as partições são verificadas.

Política de roteamento (consulta pontual)

  1. Extraia o valor original v1 para uma consulta equivalente da coluna c1. Esta operação aplica-se também às outras colunas.

  2. Se a coluna utilizar uma função de particionamento, calcule o valor da função pela fórmula f1 = partFunc(v1). Caso contrário, o valor da função será v1.

  3. Utilize o algoritmo de hash consistente para calcular o hash c1_hash de f1. O hash resultante é um inteiro do tipo long.

  4. O roteamento dos dados para diferentes partições segue o valor de c1_hash.

Para mais detalhes, consulte Política de roteamento na seção Particionamento HASH.

A política de roteamento é igual à do Particionamento Hash.

Divisão de partição quente

Sem suporte. Não é possível realizar nova divisão de partição quente em um valor de chave quente como c1='88'.

Suportado

Sem suporte

Gerenciamento de partições, incluindo divisão, mesclagem e migração

Suportado

Suportado

Suportado

Subparticionamento

Suportado

Suportado

Suportado