CEVIU Logo
Voltar

Os perigos ocultos de manter tabelas em excesso no PostgreSQL

Aprofundamento CEVIU

Aprofundamento

O raster_overviews é uma view de metadados do PostGIS que lista informações sobre visões agregadas de dados raster, como pirâmides de resolução reduzida usadas em mapas e análise espacial. Ela depende diretamente de catálogos do sistema PostgreSQL (pg_class, pg_attribute, pg_namespace, entre outros) para construir seu resultado. Quando há dezenas de milhares de tabelas, esses catálogos explodem em tamanho: cada tabela gera múltiplas entradas nessas tabelas do sistema (por colunas, índices, constraints), e a view acaba varrendo milhões de linhas de metadados em tempo de execução, mesmo que o dado raster propriamente dito seja pequeno.

Isso não é um bug no PostGIS, nem na view em si: é uma consequência direta da arquitetura de catálogo do PostgreSQL, que carrega metadados em memória de forma não limitada por conexão. A performance cai não por causa da lógica da query, mas porque o planejador precisa ler, analisar e unir milhares de registros de sistema antes de montar o plano, e isso se repete a cada execução, sem cache eficiente para esse tipo de consulta em escala extrema.

O que mudou

A cobertura anterior do CEVIU já havia alertado que cenários de borda, como esquemas com milhares de objetos, tendem a emergir como gargalos silenciosos artigo original. Agora, a nova análise confirma que o problema não é teórico: foi observado em produção, com impacto real em memória (até 500 MB por conexão no CacheMemoryContext) e downtime de upgrade. Antes era um caso hipotético de 'excesso de objetos'; agora é um diagnóstico com evidências técnicas, experimentos reprodutíveis e solução prática, eliminar tabelas, não só otimizar queries.

Por que isso importa

Para engenheiros de dados que projetam multi-tenancy com schema-per-tenant ou pipelines que geram tabelas dinâmicas (ex: ingestão por partição temporal ou por fonte), esse é um limite físico do PostgreSQL, não um ajuste de configuração. Diferente do bloat ou do vacuuming, que podem ser mitigados com rotinas, o crescimento do catálogo é linear com o número de objetos e afeta operações fundamentais: planejamento de consultas, upgrades com pg_upgrade, inicialização de conexões e até o próprio autovacuum. Ignorar isso leva a degradações progressivas, difíceis de correlacionar com a causa raiz.

Linha do tempo

  1. CEVIU publica artigo sobre bloat como característica de design do PostgreSQL

  2. CEVIU analisa degradação de filas Postgres por acúmulo de dead tuples

  3. CEVIU alerta sobre riscos de ignorar cenários de borda no modelo de dados

  4. CEVIU explica por que DELETE não escala em grandes volumes no PostgreSQL

  5. Nova análise mostra impacto real de excesso de tabelas no catálogo e no raster_overviews

Perguntas frequentes

O raster_overviews é um componente crítico do PostGIS? Posso desativá-lo?

Não é crítico para o funcionamento básico do PostGIS, mas é usado por ferramentas de visualização e APIs geoespaciais que dependem de metadados de raster. Desativá-lo não é possível, é uma view pública. A solução é reduzir a carga nos catálogos que ela consulta, não removê-la.

Quantas tabelas são 'muitas' no PostgreSQL?

Não há um número fixo, mas problemas começam a aparecer consistentemente acima de 10 mil tabelas por banco. O artigo mostra impacto claro com 20 mil tabelas, e isso inclui objetos derivados como colunas, índices e constraints, que multiplicam o volume nos catálogos.

DROP TABLE resolve o problema imediatamente?

Sim, mas com ressalvas: o cache do catálogo (CacheMemoryContext) não é limpo automaticamente após o DROP. É necessário reiniciar a conexão ou forçar pg_reload_conf() em alguns casos. Para conexões longas (ex: aplicações com connection pooling), o efeito só aparece após reconexão.

Particionamento declarativo resolve o problema de muitas tabelas?

Não, ele troca muitas tabelas por uma única tabela com muitas partições físicas. As partições ainda geram entradas em pg_class e pg_attribute, então o impacto no catálogo permanece. O ideal é consolidar lógica em menos tabelas, não apenas renomear o problema.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Dados
Publicado
03 de julho 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