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.