Todos os produtos
Search
Central de documentação

PolarDB:HASH

Última atualização: Jun 28, 2026

A função HASH distribui linhas entre shards de banco de dados ou shards de tabela ao calcular o módulo do valor de cada chave de shard pelo total de shards. Use essa função quando os valores da chave de shard forem inteiros ou strings (como IDs de usuário ou de pedido) e estiverem distribuídos uniformemente.

Funcionamento

O roteamento HASH depende se a chave de shard do banco de dados e a chave de shard da tabela correspondem à mesma coluna ou a colunas diferentes.

Chaves de shard diferentes para sharding de banco de dados e de tabela

O sistema divide o valor da chave de shard pelo número de shards de banco de dados para determinar qual shard recebe a linha:

  • Chave inteira: HASH(8) equivale a 8 % D, em que D representa o número de shards de banco de dados.

  • Chave string: HASH("ABC") equivale a hashcode("ABC").abs() % D. O sistema converte a string em um valor de hash e, em seguida, usa esse valor para roteamento.

Mesma chave de shard para sharding de banco de dados e de tabela

A divisão do valor da chave de shard considera o número total de shards de tabela em todos os shards de banco de dados.

Example: Dois shards de banco de dados, com quatro shards de tabela cada (oito shards de tabela no total).

  • O shard de banco de dados 0 armazena os shards de tabela de 0 a 3.

  • O shard de banco de dados 1 armazena os shards de tabela de 4 a 7.

  • Valor da chave 15: 15 % (2 × 4) = 7 direciona a linha para o shard de tabela 7 no shard de banco de dados 1.

Tipos de dados compatíveis

Tipo de dado

Comportamento

INTEGER

Valor da chave usado diretamente no cálculo do módulo

STRING

Valor da chave convertido em hash antes do cálculo do módulo; diferencia maiúsculas de minúsculas

Nota

As chaves de shard devem ser do tipo INTEGER ou STRING. Durante o roteamento de dados, chaves de shard do tipo STRING diferenciam maiúsculas de minúsculas.

Casos de uso

  • Sharding de banco de dados baseado em IDs de usuário ou de pedido.

  • Valores da chave de shard do tipo string.

Importante

A função HASH produz uma distribuição uniforme de dados apenas quando os valores na coluna da chave de shard também estão distribuídos uniformemente.

Exemplo

A instrução DDL a seguir crie uma tabela que usa sharding HASH na coluna id exclusivamente para sharding de banco de dados:

CREATE TABLE test_hash_tb (
    id int,
    name varchar(30) DEFAULT NULL,
    create_time datetime DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
dbpartition by HASH(ID);