Todos os produtos
Search
Central de documentação

AnalyticDB:Como usar partição de tabela?

Última atualização: Jun 27, 2026

O particionamento de tabelas divide uma tabela grande em segmentos menores e gerenciados independentemente com base no valor de uma coluna. Em tabelas de fatos ou extensas, essa técnica acelera a exclusão e o carregamento de dados ao permitir operações sobre uma partição inteira de uma só vez, em vez de verificar linhas individualmente.

  • Remova todos os dados de uma partição com ALTER TABLE DROP PARTITION — muito mais rápido do que excluir linhas uma a uma.

  • Carregue um novo lote de dados via troca de partição com ALTER TABLE EXCHANGE PARTITION, evitando gravações na tabela inteira.

Quando usar o particionamento de tabela

Antes de particionar uma tabela, confirme os seguintes pontos:

  • A tabela é grande. Tabelas com milhões ou bilhões de linhas são fortes candidatas. Para tabelas com apenas alguns milhares de linhas, a sobrecarga administrativa geralmente supera os ganhos de desempenho.

  • As consultas filtram por uma coluna específica. O particionamento é eficaz quando as cláusulas WHERE referenciam consistentemente a chave de partição, permitindo que o planejador de consultas ignore partições irrelevantes.

  • Os dados são gerenciados por tempo ou categoria. Operações regulares, como purgar dados do mês anterior ou carregar um lote diário, alinham-se naturalmente aos limites das partições.

Se a maioria das consultas realizar varreduras completas na tabela sem filtrar pela chave de partição, o particionamento adicionará sobrecarga sem melhorar o desempenho.

Tipos de partição

O AnalyticDB for PostgreSQL oferece suporte a três tipos de partição:

Tipo

Quando usar

Particionamento por intervalo

Divida por um intervalo contínuo de valores numéricos ou de data — por exemplo, uma partição por mês para dados de séries temporais.

Particionamento por lista

Utilize uma lista explícita de valores discretos — por exemplo, uma partição por região de vendas ou categoria de produto.

Partição composta

Combine estratégias de intervalo e lista para dados multidimensionais — por exemplo, particione primeiro por ano e depois por região dentro de cada ano.

O particionamento por intervalo aceita apenas tipos de coluna numéricos e de data/hora.

Crie uma tabela particionada

O exemplo a seguir cria uma tabela LINEITEM particionada por data de envio. Cada partição cobre um mês civil, de janeiro de 1992 a janeiro de 2000.

CREATE TABLE LINEITEM (
    L_ORDERKEY      BIGINT NOT NULL,
    L_PARTKEY       BIGINT NOT NULL,
    L_SUPPKEY       BIGINT NOT NULL,
    L_LINENUMBER    INTEGER,
    L_QUANTITY      FLOAT8,
    L_EXTENDEDPRICE FLOAT8,
    L_DISCOUNT      FLOAT8,
    L_TAX           FLOAT8,
    L_RETURNFLAG    CHAR(1),
    L_LINESTATUS    CHAR(1),
    L_SHIPDATE      DATE,
    L_COMMITDATE    DATE,
    L_RECEIPTDATE   DATE,
    L_SHIPINSTRUCT  CHAR(25),
    L_SHIPMODE      CHAR(10),
    L_COMMENT       VARCHAR(44)
) WITH (APPENDONLY=true, ORIENTATION=column, COMPRESSTYPE=zlib, COMPRESSLEVEL=5, BLOCKSIZE=1048576, OIDS=false)
DISTRIBUTED BY (l_orderkey)
PARTITION BY RANGE (L_SHIPDATE)
    (START (date '1992-01-01') INCLUSIVE END (date '2000-01-01') EXCLUSIVE EVERY (INTERVAL '1 month'));

Principais parâmetros neste exemplo:

Parâmetro

Valor

Descrição

ORIENTATION

column

Armazenamento orientado a colunas, otimizado para consultas analíticas

COMPRESSTYPE

zlib

Compressão zlib para reduzir o espaço de armazenamento

COMPRESSLEVEL

5

Nível de compressão (1–9; maior = menor tamanho, gravação mais lenta)

BLOCKSIZE

1048576

Tamanho do bloco em bytes (1 MB)

DISTRIBUTED BY

l_orderkey

Chave de distribuição para espalhar dados entre segmentos

PARTITION BY RANGE

L_SHIPDATE

Coluna de partição — deve ser um tipo numérico ou de data/hora

Gerencie partições

Exclua uma partição antiga

Para remover todos os dados de uma partição, exclua-a diretamente. Essa operação é muito mais rápida do que uma instrução DELETE, pois remove o armazenamento da partição sem verificar linhas individuais.

ALTER TABLE LINEITEM DROP PARTITION FOR (date '1992-01-01');

Carregue dados via troca de partição

Use o comando ALTER TABLE EXCHANGE PARTITION para adicionar uma nova partição de dados. Esse recurso permite carregar um lote de dados na tabela particionada sem executar uma gravação completa na tabela.

ALTER TABLE LINEITEM EXCHANGE PARTITION FOR (date '1999-12-01')
    WITH TABLE lineitem_staging;