Voltar ao Blog
05 Mar 2026 1 min de leitura

Otimização de PostgreSQL: De 5 Dias para 2.5 Dias

Técnicas avançadas de otimização de PostgreSQL que usei para reduzir o tempo de fechamento de folha de R$ 50M+ de 5 dias para 2.5 dias.

PostgreSQL Performance SQL Database Otimização

O Cenário

Sistema de folha de pagamento processando R$ 50M+ mensais. Fechamento levava 5 dias úteis. Stakeholders frustrados, equipe trabalhando até tarde, erros frequentes.

Diagnóstico

Antes de otimizar, você precisa medir. Usei pg_stat_statements e EXPLAIN ANALYZE para identificar gargalos:

-- Identificando queries lentas
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 20;

Técnicas Aplicadas

1. Índices Estratégicos

-- Índice parcial para folhas ativas
CREATE INDEX idx_payroll_active
ON payrolls (employee_id, period)
WHERE status = 'active';

-- Índice composto para relatórios
CREATE INDEX idx_reports_composite
ON calculations (department_id, period, type);

2. Materialized Views

CREATE MATERIALIZED VIEW mv_monthly_summary AS
SELECT
    department_id,
    period,
    SUM(gross_salary) as total_gross,
    SUM(deductions) as total_deductions,
    COUNT(*) as employee_count
FROM payroll_calculations
GROUP BY department_id, period;

-- Refresh incremental
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_monthly_summary;

3. Particionamento

Tabelas de cálculos particionadas por período fiscal.

Resultados

  • Fechamento: 5 dias → 2.5 dias
  • +50% performance em relatórios
  • Queries críticas: 30s → 2s

Conclusão

PostgreSQL é incrivelmente poderoso quando você entende suas features avançadas. O investimento em aprender compensa.

MG
Marcelo Guimarães
Full Stack Developer
Compartilhar: