neon-postgres-egress-optimizer
Ajuda seu agente a encontrar e corrigir problemas de transferência de dados excessiva em bancos de dados Postgres. É útil para otimizar o uso de rede e reduzir custos.
O que ela faz
Este agente ajuda a encontrar e corrigir problemas que fazem seu banco de dados enviar mais dados pela rede do que o necessário. Isso pode reduzir custos com transferência de dados.
Quando usar
- ✓Quando sua conta do banco de dados está mais alta que o esperado.
- ✓Se você notar custos inesperados de transferência de dados.
- ✓Ao otimizar consultas que trazem muitos dados.
Exemplo do que pedir para a IA
“Minha conta do banco de dados está muito alta, pode me ajudar a otimizar?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele analisa quais consultas enviam mais dados e sugere como otimizá-las, seja buscando menos colunas, adicionando limites de resultados ou usando cache.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill neon-postgres-egress-optimizerOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/neon-postgres-egress-optimizer/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Otimizador de Egress do Postgres
Quando Usar
Use esta habilidade quando precisar diagnosticar e corrigir o tráfego de saída excessivo do Postgres (transferência de dados de rede) em uma base de código. Use quando um usuário mencionar contas de banco de dados altas, custos inesperados de transferência de dados, cobranças de transferência de rede, picos de saída, "por que minha conta Neon está tão alta", "os custos do banco de dados dispararam", otimização de SELECT *, consulta...
Oriente o usuário no diagnóstico e correção de padrões de consulta do lado da aplicação que causam transferência excessiva de dados (saída) do banco de dados Postgres. A maioria das contas de saída altas vem da aplicação buscando mais dados do que utiliza.
Passo 1: Diagnosticar
Identifique quais consultas transferem mais dados. A ferramenta principal é a extensão pg_stat_statements.
Verificar se pg_stat_statements está disponível
SELECT 1 FROM pg_stat_statements LIMIT 1;
Se isso gerar um erro, a extensão precisa ser criada:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
No Neon, ela está disponível por padrão, mas pode precisar desta etapa CREATE EXTENSION.
Lidar com estatísticas vazias
As estatísticas são limpas quando um compute Neon escala para zero e reinicia. Se as estatísticas estiverem vazias ou o compute acordou recentemente:
- Reinicie as estatísticas para iniciar uma janela de medição limpa:
SELECT pg_stat_statements_reset(); - Deixe a aplicação rodar sob tráfego representativo por pelo menos uma hora.
- Retorne e execute as consultas de diagnóstico abaixo.
Se o usuário tiver estatísticas de um banco de dados de produção, use-as. Se ele não tiver acesso às estatísticas de produção, prossiga para o Passo 2 e analise a base de código diretamente — padrões de nível de código geralmente são suficientes para identificar os piores infratores.
Consultas de diagnóstico
Execute estas para identificar os principais contribuintes de saída. Concentre-se em consultas que retornam muitas linhas, retornam linhas largas (colunas JSONB, TEXT, BYTEA) ou são chamadas com muita frequência.
Consultas retornando o maior número total de linhas:
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY rows DESC
LIMIT 10;
Consultas retornando o maior número de linhas por execução (SELECTs mal escopados, paginação ausente):
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY avg_rows_per_call DESC
LIMIT 10;
Consultas chamadas com mais frequência (candidatas para cache):
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY calls DESC
LIMIT 10;
Consultas de execução mais longa (não é uma medida direta de saída, mas ajuda a identificar consultas problemáticas durante um pico):
SELECT query, calls, rows AS total_rows,
round(total_exec_time::numeric, 2) AS total_exec_time_ms
FROM pg_stat_statements
WHERE calls > 0
ORDER BY total_exec_time DESC
LIMIT 10;
Interpretar os resultados
Classifique os achados pelo impacto estimado de saída:
- Alta contagem de linhas + linhas largas = maior saída. Uma consulta retornando 1.000 linhas onde cada linha inclui uma coluna JSONB de 50KB transfere ~50MB por chamada.
- Frequência extrema de chamadas em até mesmo consultas pequenas se acumula. Uma consulta chamada 50.000 vezes/dia retornando 10 linhas cada = 500.000 linhas/dia.
- Cruze com o esquema para identificar quais colunas são largas. Procure por colunas JSONB, TEXT, BYTEA e VARCHAR grandes.
Passo 2: Analisar base de código
Para cada consulta identificada no Passo 1, ou para cada consulta de banco de dados na base de código se não houver estatísticas disponíveis, verifique:
- Ela seleciona apenas as colunas que a resposta precisa?
- Ela retorna um número limitado de linhas (LIMIT/paginação)?
- Ela é chamada com frequência suficiente para se beneficiar do cache?
- Ela busca dados brutos que são agregados no código da aplicação?
- Ela usa um JOIN que duplica dados pais entre linhas filhas?
Passo 3: Corrigir
Aplique a correção apropriada para cada problema encontrado. Abaixo estão os anti-padrões de saída mais comuns e como corrigi-los.
Colunas não utilizadas (SELECT *)
Problema: A consulta busca todas as colunas, mas a aplicação usa apenas algumas. Colunas grandes (blobs JSONB, campos TEXT) são transferidas pela rede e descartadas.
Antes:
SELECT * FROM products;
Depois:
SELECT id, name, price, image_urls FROM products;
Paginação ausente
Problema: Um endpoint de lista retorna todas as linhas sem LIMIT. Este é um risco de saída ilimitado — cada nova linha na tabela aumenta a transferência de dados em cada solicitação. Sinalize isso independentemente do tamanho atual da tabela.
…
Perguntas frequentes
Como sei se tenho um problema de 'egress'?
Se você está pagando mais do que esperava por transferência de dados do banco de dados ou se suas consultas trazem muitos dados de volta para a aplicação.
O que é 'egress'?
'Egress' é a quantidade de dados que sai do seu banco de dados para a sua aplicação. Pagar por muitos dados saindo pode aumentar seus custos.
O que são `pg_stat_statements`?
É uma ferramenta do banco de dados PostgreSQL que ajuda a identificar quais consultas estão sendo executadas e quantos dados elas transferem.
Detalhes
Descrição original do autor
Diagnose and fix excessive Postgres egress (network data transfer) in a codebase.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3671
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
clickhouse-io
Ajuda seu agente a otimizar consultas e esquemas no banco de dados ClickHouse. Ele aplica as melhores práticas para cargas de trabalho analíticas de alta performance. Use quando consultas analíticas demoram muito.
affaan-m/ECC
scientific-db-pubmed-database
Ajuda seu agente a buscar artigos científicos na área biomédica. É útil para pesquisas que precisam de informações médicas específicas.
affaan-m/ECC
scientific-db-uspto-database
Permite ao agente consultar dados oficiais de patentes e marcas registradas dos EUA. É útil para pesquisas de propriedade intelectual.
affaan-m/ECC