You Secure
Guia prático · PostgreSQL Nível: Avançado Leitura: 8 min

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.

Atualizado pela Equipe de Engenharia You Secure · Infraestrutura NVMe no Brasil

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.

2. Passo a passo de implementação e validação

  1. 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;.
  2. Habilite CREATE EXTENSION IF NOT EXISTS pg_stat_statements; para ranquear as queries que mais acumulam tempo total de CPU.
  3. Rode EXPLAIN (ANALYZE, BUFFERS) na query suspeita e procure por Seq Scan com milhares de linhas filtradas.
  4. 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.

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
Estamos online