Todos os produtos
Search
Central de documentação

PolarDB:Particionamento HASH

Última atualização: Jun 28, 2026

O particionamento HASH distribui os dados uniformemente entre as partições por meio do algoritmo de hash consistente MurmurHash3. Este tópico descreve a política de particionamento HASH para bancos de dados PolarDB-X no modo de particionamento automático. Diferentemente do particionamento KEY, o particionamento HASH aceita funções de particionamento em chaves de partição de coluna única, o que permite controlar como os valores são transformados antes da aplicação do hash.

Para uma comparação lado a lado entre o particionamento HASH e o particionamento KEY, consulte a tabela Comparação entre particionamento KEY e particionamento HASH na visão geral dos tipos de partição.

Nota

O algoritmo de roteamento do particionamento HASH no PolarDB-X é diferente do MySQL.

Sintaxe

CREATE TABLE ...
PARTITION BY HASH(partition_expr)
PARTITIONS number;

partition_expr aceita uma das seguintes formas:

Forma

Descrição

Exemplo

partition_column_list

Uma ou mais colunas de chave de partição

HASH(id), HASH(id, bid)

partition_func(partition_column)

Função de particionamento aplicada a uma única coluna

HASH(TO_DAYS(birthday))

Funções de particionamento suportadas

TO_DAYS, TO_MONTHS, TO_WEEKS, TO_SECOND, UNIX_TIMESTAMP, MONTH, DAYOFWEEK, DAYOFMONTH, DAYOFYEAR, SUBSTR, SUBSTRING, RIGHT, LEFT

Nota

As funções de particionamento aplicam-se apenas a chaves de partição de coluna única. Não há suporte para funções de particionamento aninhadas.

Observações de uso

  • Funções de particionamento são suportadas somente para chaves de partição de coluna única. Os tipos de dados aceitos nas colunas da chave de partição variam conforme a função de particionamento utilizada.

  • Chaves de partição vetoriais (multicoluna) não aceitam funções de particionamento.

  • O particionamento HASH não oferece suporte à divisão de partições de dados quentes.

  • Por padrão, uma tabela particionada pode conter até 8.192 partições.

  • Uma chave de partição pode ser composta por até cinco colunas, por padrão.

  • Caso uma coluna da chave de partição utilize um tipo sensível ao fuso horário, como TIMESTAMP, aplique a função de particionamento UNIX_TIMESTAMP nessa coluna.

Exemplos

Uso de função de particionamento

Particione pela coluna birthday (tipo DATETIME) utilizando TO_DAYS para converter valores de data em contagem de dias antes de aplicar o hash. A tabela será dividida em 8 partições.

CREATE TABLE tb_h_fn(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime not null,
  primary key(id)
)
PARTITION BY HASH(TO_DAYS(birthday))
PARTITIONS 8;

Uso de chave de partição de coluna única

Particione diretamente pela coluna id. A tabela será dividida em 8 partições.

CREATE TABLE tb_h(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime not null,
  primary key(id)
)
PARTITION BY HASH(id)
PARTITIONS 8;

Uso de chave de partição vetorial

Particione pelas colunas id e bid simultaneamente. A tabela será dividida em 8 partições.

CREATE TABLE tb_h2(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime not null,
  primary key(id)
)
PARTITION BY HASH(id, bid)
PARTITIONS 8;
Importante

Ao utilizar uma chave de partição vetorial, a eliminação de partição aplica-se apenas a consultas que incluam condições de igualdade em todas as colunas da chave de partição. Neste exemplo, a consulta deve filtrar tanto por id quanto por bid para se beneficiar da eliminação de partição.

Limitações

Tipos de dados suportados

Categoria

Tipos

Inteiro

BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED

Data e hora

DATETIME, DATE, TIMESTAMP

String

CHAR, VARCHAR

Distribuição de dados e seleção da chave de partição

O particionamento HASH utiliza o MurmurHash3, um algoritmo de hash consistente com baixas taxas de colisão e alto desempenho. No entanto, o MurmurHash3 não garante uma distribuição equilibrada quando a chave de partição possui poucos valores distintos.

A distribuição torna-se equilibrada quando o número de valores distintos da chave de partição ultrapassa 3.000. Quanto maior a quantidade de valores distintos, mais uniforme será a distribuição entre as partições.