Todos os produtos
Search
Central de documentação

AnalyticDB:Definições de formato de armazenamento de tabela

Última atualização: Jun 27, 2026

O AnalyticDB for PostgreSQL oferece três modelos de armazenamento: orientado a linhas, orientado a colunas e híbrido linha-coluna. Escolha o modelo adequado ao criar uma tabela.

Escolha um modelo de armazenamento

O modelo escolhido afeta o throughput de escrita, o desempenho das consultas e a taxa de compressão. Use os critérios abaixo para decidir.

Critério

Orientado a linhas

Orientado a colunas

Híbrido linha-coluna

Padrão de escrita

Atualizações frequentes, INSERT em tempo real

Carregamento em lote (COPY, INSERT INTO SELECT)

Misto: combina escritas em tempo real e carregamentos em lote

Padrão de consulta

Consultas pontuais, acesso a linhas completas

Agregações em poucas colunas, por exemplo, SELECT SUM(amount) ... WHERE region = 'us'

Ambos

Compressão

Padrão

3 a 5 vezes superior à orientada a linhas

Automática, conforme o método de escrita

Requisito de versão

Todas as versões

Todas as versões

Apenas V7.0

Compatibilidade com Data Transmission Service (DTS)

Obrigatória (tabelas de destino devem ser orientadas a linhas)

Não compatível

Não compatível

Nota

O armazenamento híbrido linha-coluna está disponível apenas no AnalyticDB for PostgreSQL V7.0.

Especifique o modelo de armazenamento

Use a cláusula WITH no comando CREATE TABLE para definir o modelo de armazenamento e configurar a compressão. Há suporte aos seguintes parâmetros.

Parâmetro

Descrição

Padrão

Valores válidos

orientation

Modelo de armazenamento. Não é possível definir o armazenamento híbrido linha-coluna aqui; use USING beam.

row

row, column

appendonly

Ativa o armazenamento otimizado para anexação. Obrigatório para tabelas orientadas a colunas.

false

true, false

compresstype

Algoritmo de compressão.

V4.3 e V6.0: none; V7.0: auto

Consulte Compressão de dados

compresslevel

Nível de compressão. Valores mais altos proporcionam melhor compressão, mas reduzem a velocidade.

1

19 (inteiro)

Tabelas orientadas a linhas

Por padrão, o AnalyticDB for PostgreSQL cria tabelas orientadas a linhas usando o modelo de armazenamento heap do PostgreSQL. Esse tipo de tabela é otimizado para:

  • Escritas em tempo real via INSERT

  • Operações frequentes de UPDATE e DELETE

  • Consultas pontuais com índice B-tree

Tabela heap (padrão)

CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);

Tabela orientada a linhas otimizada para anexação (AORO)

CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=row)
DISTRIBUTED BY (a);
Nota

Ao usar o Data Transmission Service (DTS) para gravar dados no AnalyticDB for PostgreSQL, as tabelas de destino devem ser orientadas a linhas. O DTS oferece sincronização quase em tempo real para operações de INSERT, UPDATE e DELETE.

Tabelas orientadas a colunas

As tabelas orientadas a colunas armazenam dados por coluna e leem apenas aquelas referenciadas na consulta. Essa característica as torna ideais para cargas de trabalho de data warehouse, especialmente consultas que agregam poucas colunas, como:

SELECT SUM(revenue), AVG(cost) FROM orders WHERE region = 'us';

Essas tabelas oferecem uma taxa de compressão de 3 a 5 vezes superior à das tabelas orientadas a linhas. No entanto, são menos eficientes para inserções ou atualizações frequentes no nível da linha. Para obter o melhor desempenho, prefira métodos de carregamento em lote, como COPY.

Tabelas orientadas a colunas exigem otimização para anexação. Defina appendonly=true durante a criação.

CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=column)
DISTRIBUTED BY (a);

Tabelas com armazenamento híbrido linha-coluna

Importante

Há suporte ao armazenamento híbrido linha-coluna apenas em instâncias do AnalyticDB for PostgreSQL V7.0.

O modelo de armazenamento híbrido linha-coluna usa o mecanismo de armazenamento Beam, que combina duas camadas internas:

  • Armazenamento delta (orientado a linhas): gerencia escritas em streaming e em tempo real via INSERT INTO ... VALUES. Oferece desempenho de escrita comparável ao de tabelas orientadas a linhas.

  • Armazenamento base (baseado em PAX, orientado a colunas): processa escritas em lote por meio de COPY ou INSERT INTO ... SELECT. Proporciona maior throughput para grandes volumes de dados.

O Beam direciona automaticamente os dados recebidos para a camada apropriada, conforme o método de escrita.

Tabelas não particionadas

Crie uma tabela com o mecanismo de armazenamento beam

CREATE TABLE testtable (a int) USING beam;

Altere uma tabela existente para usar o mecanismo de armazenamento beam

ALTER TABLE testtable SET ACCESS METHOD beam;

Tabelas particionadas

Os exemplos a seguir usam uma tabela particionada base criada com armazenamento heap:

CREATE TABLE am_partitioned(x INT, y INT)
PARTITION BY HASH (x) USING heap;

Especifique o modelo de armazenamento ao criar uma partição

Crie uma partição com armazenamento orientado a colunas otimizado para anexação (AOCO):

CREATE TABLE am_partitioned_1 PARTITION OF am_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 0) USING ao_column;

Crie uma partição com armazenamento híbrido linha-coluna (beam):

CREATE TABLE amm_partitioned_2 PARTITION OF amm_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 1) USING beam;

Altere o modelo de armazenamento de uma partição existente

ALTER TABLE am_partitioned_1 SET ACCESS METHOD ao_row;

Compressão de dados

A compressão está disponível para tabelas orientadas a colunas e tabelas orientadas a linhas otimizadas para anexação (AORO) (appendonly=true). Há suporte a dois níveis de compressão:

  • Compressão no nível da tabela: aplica um único algoritmo a toda a tabela

  • Compressão no nível da coluna: aplica um algoritmo específico a cada coluna

Algoritmos compatíveis por versão

Algoritmo

V4.3

V6.0

V7.0

Observações

zstd

Não

Sim

Sim

zlib

Sim

Sim

Não

lz4

Não

Sim

Sim

rle_type

Sim

Sim

Não

Apenas tabelas orientadas a colunas

none

Sim

Sim

Sim

Sem compressão

auto

Sim

Sim

Sim

Padrão na V7.0; seleciona o algoritmo com base nos atributos dos dados

Nota

Se você especificar o algoritmo QuickLZ, ele será substituído automaticamente pelo zlib. O algoritmo rle_type aplica-se exclusivamente a tabelas orientadas a colunas.

Exemplos

Crie uma tabela orientada a colunas com as configurações padrão de compressão:

CREATE TABLE am_testtable(x INT, y INT)
WITH (orientation=column);

Crie uma tabela orientada a colunas com compressão zlib no nível 5:

CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zlib, compresslevel=5);

Crie uma tabela orientada a colunas com compressão zstd no nível 9:

CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zstd, compresslevel=9);