Todos os produtos
Search
Central de documentação

PolarDB:Particionamento KEY

Última atualização: Jun 28, 2026

Use o particionamento KEY quando a chave de partição natural for uma string, data ou coluna composta. Ao contrário do particionamento HASH, que exige uma expressão inteira, o particionamento KEY aceita tipos de colunas não inteiros e chaves de partição com múltiplas colunas, sendo a opção mais adequada para a maioria dos esquemas reais.

Nota

O algoritmo de roteamento do particionamento KEY no PolarDB-X usa MurmurHash3, diferente do algoritmo de particionamento KEY do MySQL.

Diferenças entre os particionamentos KEY e HASH

Comportamento

Particionamento KEY

Particionamento HASH

Chave de partição obrigatória

Não — omitir a chave de partição usa a chave primária por padrão; na ausência dela, o sistema usa a chave única

Sim — especifique uma expressão inteira ou coluna

Chaves de partição com múltiplas colunas

Compatível (chave de partição vetorial)

Incompatível

Tipos de dados compatíveis

INT, STRING, DATE, DATETIME (e subtipos)

Apenas tipos inteiros

Funções de particionamento

Incompatíveis

Compatíveis

Para obter uma comparação completa, consulte Comparação entre particionamento KEY e HASH.

Sintaxe

CREATE TABLE ...
PARTITION BY KEY(partition_column_list)
PARTITIONS number;

partition_column_list:
  column_name [, column_name ...]

Parâmetro

Descrição

partition_column_list

Uma ou mais colunas usadas como chave de partição. Se omitida, o sistema usa a chave primária. Caso não exista chave primária, ele adota a chave única.

number

Número de partições. Máximo: 8.192.

Exemplos

Chave de partição de coluna única

Crie a tabela particionada pela coluna id em 8 partições:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(id)
PARTITIONS 8;

Chave de partição vetorial (múltiplas colunas)

Use bid e id como chave de partição de duas colunas, com 8 partições:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(bid, id)
PARTITIONS 8;
Importante

Em uma chave de partição vetorial, apenas a primeira coluna (bid neste exemplo) determina a partição de destino da linha. As demais colunas (id) não participam do roteamento e servem para viabilizar a divisão de partições de dados quentes. O pruning de partição ocorre quando a consulta inclui uma condição de igualdade na coluna principal (bid).

Limites

Tipos de dados compatíveis

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, BINARY

Ponto fixo

DECIMAL (dígitos fracionários devem ser 0)

Outros limites

  • O particionamento KEY não oferece suporte a funções de particionamento.

  • Por padrão, uma tabela particionada pode ter no máximo 8.192 partições.

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

Distribuição de dados

O particionamento KEY emprega o algoritmo MurmurHash3, que apresenta baixas taxas de colisão de hash e alto desempenho. A distribuição entre as partições torna-se equilibrada quando a chave de partição possui mais de 3.000 valores distintos; quanto maior a quantidade de valores distintos, mais uniforme será a distribuição.