Voltar
Entendendo o TOAST no PostgreSQL

Desvendando o TOAST: Como o PostgreSQL Otimiza o Armazenamento de Dados

Aprofundamento CEVIU

Aprofundamento

O PostgreSQL usa o TOAST (The Oversized-Attribute Storage Technique) para gerenciar dados grandes, um mecanismo crucial para a performance. Basicamente, quando uma linha excede 2.032 bytes, cerca de um quarto de uma página de 8 KB, o TOAST é acionado. Este limite garante que pelo menos quatro linhas caibam em cada página, otimizando o armazenamento.

Valores de comprimento variável, como text, jsonb e bytea, são os alvos do TOAST. Ele tem duas formas de agir: comprimindo o valor na própria linha ou movendo-o para uma tabela TOAST auxiliar, que reside no esquema pg_toast. Se movido, o valor é dividido em chunks de até 1.996 bytes, e a linha original mantém um ponteiro de 18 bytes para localizá-los. Cada coluna tem uma estratégia de armazenamento: PLAIN (não aplica TOAST, para tipos de largura fixa), EXTENDED (padrão para text, comprime e move se preciso), EXTERNAL (move, mas não comprime) e MAIN (comprime, tenta manter na linha, move como último recurso). O CEVIU News já explicou em

O que mudou

A grande novidade é a mudança no algoritmo padrão de compressão para objetos TOAST no Postgres 19, agora em beta. Conforme noticiamos em Postgres 19 Aprimora Compressão de Dados com Migração para LZ4, de 20 de julho de 2026, o padrão migrará de pglz para LZ4 em builds com suporte a LZ4. O pglz, compressor próprio do Postgres, tem uma janela de 4 KB e faz uma busca mais aprofundada, sendo eficiente para dados repetitivos como chaves em documentos JSON, mas mais lento. Já o LZ4, suportado desde o Postgres 14, tem uma janela maior de 64 KB e é significativamente mais rápido por checar um único candidato, sendo a escolha ideal para a maioria dos casos.

Enquanto o pglz pode ser mais rápido para pré-visualizações de valores grandes, por ter um 'teto' previsível de bytes comprimidos, o LZ4 geralmente oferece um equilíbrio melhor entre compressão e velocidade, tornando-o o novo default preferencial. Existem cenários, como dados já comprimidos ou leitura de trechos específicos de bytea, onde a estratégia EXTERNAL, sem compressão, é mais vantajosa, pois permite ao Postgres buscar diretamente o chunk necessário sem precisar descomprimir todo o valor.

Por que isso importa

A otimização do armazenamento de dados através do TOAST é vital para a saúde de qualquer banco de dados. Uma gestão eficiente de valores grandes impacta diretamente o consumo de disco, reduzindo custos e aumentando a quantidade de dados que pode ser mantida em memória, acelerando as consultas. Reduzir o tamanho dos dados também diminui o volume do Write-Ahead Log (WAL), essencial para replicação e backups.

Com a transição para o LZ4 como padrão, o Postgres 19 promete ganhos de desempenho notáveis para a maioria das cargas de trabalho que lidam com dados variáveis extensos. A escolha correta da estratégia de compressão ou mesmo a desativação dela para casos específicos pode ser a diferença entre um sistema lento e um que responde rapidamente às demandas analíticas e operacionais, garantindo uma melhor experiência para o usuário final.

Linha do tempo

  1. CEVIU News publica 'Postgres 19 Aprimora Compressão de Dados com Migração para LZ4', anunciando a mudança de padrão.

  2. CEVIU News publica 'Desvendando o TOAST do PostgreSQL: Compressão e Armazenamento de Dados Grandes', introduzindo o mecanismo.

  3. Notícia atual: aprofundamento sobre o TOAST e a mudança de algoritmos de compressão no PostgreSQL.

Perguntas frequentes

O que é o TOAST no PostgreSQL?

TOAST (The Oversized-Attribute Storage Technique) é um mecanismo do PostgreSQL que gerencia eficientemente o armazenamento de valores de dados muito grandes em colunas de tipo variável. Ele faz isso comprimindo os dados ou movendo-os para tabelas auxiliares, otimizando o uso do espaço em disco e a performance.

Quando o TOAST é ativado para uma linha de dados?

O TOAST é ativado quando o tamanho total de uma linha excede um limite de 2.032 bytes, que é aproximadamente um quarto do tamanho padrão de uma página de dados de 8 KB no PostgreSQL. Este limite garante que várias linhas possam ser armazenadas em uma única página.

Qual a diferença entre TOAST e 'large objects' no PostgreSQL?

TOAST é automático para colunas de comprimento variável, gerencia dados até 1 GB, e os valores são deletados junto com a linha. 'Large objects' são usados para arquivos como vídeos ou PDFs, podem ter até 4 TB, exigem criação explícita e persistem mesmo após a exclusão da linha que os referencia.

Quais estratégias de armazenamento o TOAST utiliza?

As estratégias são PLAIN (não aplica TOAST, para tipos fixos), EXTENDED (padrão, comprime e move se necessário), EXTERNAL (move sem comprimir) e MAIN (comprime, tenta manter na linha). A escolha ideal depende do tipo e uso dos dados, podendo ser ajustada para otimizar desempenho.

Fontes

Avalie este artigo:
Categoria
CEVIU Dados
Publicado
15 de outubro de 2026
Editoria
CEVIU Dados

Quer receber mais sobre CEVIU Dados?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser