Os valores padrão do PostgreSQL são pensados para máquinas pequenas. Numa máquina dedicada, alguns ajustes no primeiro dia já mudam desempenho e segurança.
- Memória: shared_buffers e effective_cache_size.
- Conexões: um pooler no lugar de muitas conexões diretas.
- Acesso: só pela rede da aplicação, com scram-sha-256.
O PostgreSQL vem configurado para rodar em quase qualquer máquina, o que significa usar pouca memória. Numa máquina só dele, vale ajustar logo no começo.
Os ajustes de partida
| Parâmetro | Ponto de partida |
|---|---|
shared_buffers | 25% da memória |
effective_cache_size | 50% a 75% da memória |
work_mem | baixo, de 16 a 64 MB |
random_page_cost | 1.1 em SSD |
shared_preload_libraries | pg_stat_statements |
O work_mem engana: cada ordenação de cada consulta pode usar esse valor, então um número alto vezes muitas conexões estoura a memória.
Conexões
Cada conexão do PostgreSQL é um processo. Em vez de subir max_connections para centenas, coloque o PgBouncer entre a aplicação e o banco e deixe poucas dezenas de conexões reais.
Acesso
No pg_hba.conf, libere só os IPs da aplicação, com autenticação scram-sha-256. No firewall da máquina, feche a porta 5432 para o resto da internet.
Diagnóstico e backup desde o começo
A extensão pg_stat_statements mostra quais consultas consomem mais tempo, e ligada desde o primeiro dia ela já tem histórico quando você precisar. Ligue também o arquivamento de WAL, que permite restaurar até um minuto específico, e marque o primeiro ensaio de recuperação. Quando banco e aplicação começarem a disputar a máquina, o guia de quando separar mostra os sinais.



