Todos os produtos
Search
Central de documentação

PolarDB:HASH

Última atualização: Jun 28, 2026

O particionamento hash distribui linhas entre partições ao aplicar uma operação de módulo a uma expressão derivada da chave de partição. Use esse tipo de particionamento para distribuir dados uniformemente por um número fixo de partições, sem condições de intervalo ou lista.

Sintaxe

CREATE TABLE ... PARTITION BY [LINEAR] HASH(expr) [PARTITIONS number]
( PARTITION partition_name1,
  PARTITION partition_name2, ...);

Parâmetros

Parâmetro

Descrição

expr

Expressão de partição. Deve retornar um valor INT. Não há suporte para tipos de string.

number

Número de partições hash.

partition_name

Nome da partição. Deve ser único na tabela.

Funcionamento

Para determinar a qual partição uma linha pertence, o PolarDB avalia a expressão de partição e aplica a seguinte fórmula:

MOD(partition_expression, number_of_partitions)

Por exemplo, com 7 partições e valor de expressão de partição igual a 15, a linha é atribuída à partição MOD(15, 7) = 1.

HASH vs LINEAR HASH

O PolarDB oferece suporte a duas variantes de particionamento hash:

HASH

LINEAR HASH

Algoritmo

Módulo do valor da função hash

Algoritmo linear, quadrático ou exponencial

A única diferença sintática é a palavra-chave LINEAR na cláusula PARTITION BY.

Exemplos

Crie uma tabela com particionamento hash

CREATE TABLE sales_hash
(
  s_id        INT,
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT,
  PRIMARY KEY(s_id)
) PARTITION BY HASH (s_id)
PARTITIONS 7;

Esse comando cria a tabela sales_hash com 7 partições. Cada linha é atribuída a uma partição com base em MOD(s_id, 7).

Crie uma tabela com particionamento LINEAR HASH

CREATE TABLE sales_linear_hash
(
  s_id        INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT,
  PRIMARY KEY(s_id)
) PARTITION BY LINEAR HASH (s_id)
PARTITIONS 7;

Esse comando cria a tabela sales_linear_hash com 7 partições e usa um algoritmo linear, quadrático ou exponencial para acelerar a manutenção das partições.