Guia prático · PostgreSQL
Como achar e corrigir Queries Lentas no PostgreSQL com pg_stat_statements e Índices
Guia prático de diagnóstico de banco de dados PostgreSQL: conexões travadas, locks e criação de índices sem travar tabelas.
Neste guia passo a passo
1. Arquitetura e pré-requisitos no ambiente
2. Passo a passo de implementação e validação
3. Boas práticas de produção, segurança e escala
1. Arquitetura e pré-requisitos no ambiente
Muitas vezes uma VPS parece estar com 'CPU alta', mas a causa é uma única consulta SQL fazendo varredura sequencial em uma tabela sem índice a cada segundo.
- Acesso via
psqlou DBeaver/TablePlus ao banco PostgreSQL.
2. Passo a passo de implementação e validação
- Veja queries rodando agora mesmo há mais de 5 segundos:
SELECT pid, now() - query_start AS duration, state, query FROM pg_stat_activity WHERE state != 'idle' ORDER BY duration DESC;. - Habilite
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;para ranquear as queries que mais acumulam tempo total de CPU. - Rode
EXPLAIN (ANALYZE, BUFFERS)na query suspeita e procure porSeq Scancom milhares de linhas filtradas. - Crie o índice em produção sem bloquear escritas usando
CREATE INDEX CONCURRENTLY idx_nome ON tabela (coluna);.
3. Boas práticas de produção, segurança e escala
Usar CONCURRENTLY ao criar índices em tabelas grandes evita que as requisições da sua aplicação fiquem aguardando em fila.
- Remova índices duplicados ou que têm
idx_scan = 0após semanas de operação.
Quer colocar PostgreSQL em produção hoje com 30% OFF no plano anual?
Suba sua VPS NVMe em São Paulo (6,6ms) com instalador em 1 clique, SSL automático e suporte humano no WhatsApp. Equivale a R$ 69,30/mês no plano anual com o cupom BLACK30 (ou R$ 99/mês no mensal).
Mais tutoriais sobre Bancos de Dados, Redis & Storage S3
You Secure