O banco de dados é frequentemente o maior gargalo de performance de sistemas web corporativos. À medida que o volume de registros na base de dados cresce, consultas SQL mal otimizadas (as chamadas Slow Queries) começam a travar conexões no servidor, elevando o uso de CPU para 100% e gerando lentidão para os usuários finais.
Neste artigo, apresentamos as principais técnicas de engenharia de banco de dados para analisar e otimizar a velocidade de consultas no PostgreSQL.
1. Localizando Slow Queries com pg_stat_statements
O primeiro passo é mapear quais consultas são de fato as vilãs de lentidão da aplicação. Para isso, ativamos a extensão nativa `pg_stat_statements`.
Ativação:
No arquivo de configuração `postgresql.conf`, adicione: ```text shared_preload_libraries = 'pg_stat_statements' ``` Após reiniciar o serviço do banco de dados, você poderá rodar queries analíticas para descobrir quais SQLs consomem mais tempo acumulado de processamento.2. Decifrando o Plano de Execução com EXPLAIN ANALYZE
Uma vez identificada a query lenta, adicione o prefixo `EXPLAIN ANALYZE` na frente do comando SQL e execute-o.
O PostgreSQL não retornará os dados das linhas, mas sim um relatório detalhado de como o planejador interno executou a busca.
O que procurar no relatório:
3. Criando Índices Inteligentes (B-Tree e Índices Compostos)
Para eliminar os Sequential Scans nas cláusulas `WHERE`, criamos índices nos campos mais buscados.
Exemplo:
Se o sistema realiza buscas frequentes combinando `cliente_id` e `data_criacao`: `CREATE INDEX idx_pedidos_cliente_data ON pedidos (cliente_id, data_criacao DESC);`*Evite o excesso:* Cada novo índice criado acelera as consultas de leitura (SELECT), mas atrasa as operações de gravação (INSERT/UPDATE), pois o PostgreSQL precisa remontar a árvore de índices a cada alteração de registro.
4. Calibração de Memória Compartilhada
A configuração padrão do PostgreSQL é conservadora para rodar em hardware modesto. Para produção, calibre parâmetros fundamentais em seu `postgresql.conf`:
Conclusão
Manter um banco de dados saudável exige monitoramento constante do plano de execução e das métricas de memória do servidor. Ao aplicar índices compostos planejados e ajustar as variáveis de buffers do PostgreSQL, sua aplicação corporativa operará de forma muito mais suave e econômica.