Documentação da Configuração do PostgreSQL
1. Configuração Básica
# Ativa a biblioteca pg_stat_statements para monitoramento de performance de consultas
shared_preload_libraries = 'pg_stat_statements'
# Define o limite mínimo de tempo (em milissegundos) para logar uma consulta
log_min_duration_statement = 1000 # Ajuste conforme necessário
- shared_preload_libraries: Carrega a biblioteca
pg_stat_statements
para coletar informações sobre consultas SQL executadas e sua performance. - log_min_duration_statement: Define o tempo mínimo (em milissegundos) para registrar uma consulta no log.
2. Configurações de Rede e Conexão
listen_addresses = '*' # Aceita conexões em todas as interfaces de rede
port = 5432 # Define a porta de conexão
max_connections = 600 # Número máximo de conexões simultâneas
- listen_addresses: Define as interfaces de rede nas quais o PostgreSQL escuta conexões.
- port: Define a porta de escuta para conexões.
- max_connections: Número máximo de conexões simultâneas permitidas.
3. Configurações de Memória
shared_buffers = 4GB # Memória compartilhada dedicada ao PostgreSQL
work_mem = 128MB # Memória dedicada para operações de cada consulta
maintenance_work_mem = 1GB # Memória dedicada para operações de manutenção (VACUUM, REINDEX, etc.)
dynamic_shared_memory_type = posix # Tipo de memória compartilhada a ser usada
- shared_buffers: Memória dedicada ao cache de dados no PostgreSQL.
- work_mem: Memória alocada por operação de consulta, como
JOINs
eSORTs
. - maintenance_work_mem: Memória alocada para operações de manutenção, como
VACUUM
eREINDEX
. - dynamic_shared_memory_type: Tipo de memória compartilhada. A opção
posix
é recomendada para sistemas Linux.
4. Configurações de Log
log_duration = off # Desativa o log de duração de consultas
logging_collector = off # Desativa o coletor de logs do PostgreSQL
log_directory = 'log' # Diretório onde os logs serão armazenados
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # Nome do arquivo de log
log_statement = 'none' # Não registra consultas SQL
- log_duration: Desativa o log de duração das consultas SQL.
- logging_collector: Define se o PostgreSQL coleta e armazena logs em arquivos.
- log_directory: Diretório onde os arquivos de log são armazenados.
- log_filename: Define o formato de nome dos arquivos de log.
- log_statement: Controla o tipo de consulta SQL que será registrada no log.
5. Configurações de Autovacuum
autovacuum = on # Ativa o autovacuum
autovacuum_vacuum_threshold = 50 # Número mínimo de tuplas mortas para iniciar o autovacuum
autovacuum_vacuum_scale_factor = 0.02 # Percentual de tuplas mortas para iniciar
autovacuum_naptime = 1s # Intervalo entre execuções do autovacuum
autovacuum_vacuum_cost_delay = 1ms # Atraso no I/O para evitar sobrecarga
autovacuum_vacuum_cost_limit = 200 # Limite de custo de I/O do autovacuum
- autovacuum: Ativa o processo de autovacuum.
- autovacuum_vacuum_threshold: Número mínimo de tuplas mortas para o autovacuum iniciar.
- autovacuum_vacuum_scale_factor: Percentual de tuplas mortas para o autovacuum ser acionado.
- autovacuum_naptime: Intervalo entre execuções do autovacuum.
- autovacuum_vacuum_cost_delay: Delay no I/O para evitar sobrecarga de sistema.
- autovacuum_vacuum_cost_limit: Limita o impacto do autovacuum no I/O.
6. Configurações de Vacuum Manual
vacuum_cost_delay = 20ms # Atraso no I/O durante o VACUUM manual
vacuum_cost_limit = 200 # Limite de custo de I/O do VACUUM manual
- vacuum_cost_delay: Delay no I/O durante o processo de VACUUM manual.
- vacuum_cost_limit: Limita o custo de I/O durante o VACUUM manual.
7. Configurações de Congelamento de Transações
vacuum_freeze_min_age = 50000000 # Idade mínima de uma tupla para ser congelada
- vacuum_freeze_min_age: Define a idade mínima de uma tupla antes de ser congelada.
8. Configurações de Análise
autovacuum_analyze_scale_factor = 0.1 # Percentual de tuplas para análise
autovacuum_analyze_threshold = 50 # Número de tuplas para análise
- autovacuum_analyze_scale_factor: Percentual de tuplas modificadas que acionam o processo de ANALYZE.
- autovacuum_analyze_threshold: Número mínimo de tuplas modificadas para iniciar o ANALYZE.
9. Código Completo de Configuração
# Configuração básica do PostgreSQL
shared_preload_libraries = 'pg_stat_statements'
log_min_duration_statement = 1000 # Ajuste conforme necessário
# Outras configurações padrão
listen_addresses = '*'
port = 5432
max_connections = 600
shared_buffers = 4GB
work_mem = 128MB
maintenance_work_mem = 1GB
dynamic_shared_memory_type = posix
# Ajustes de log
log_duration = off
logging_collector = off
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'none'
# Configuração do autovacuum
autovacuum = on
autovacuum_vacuum_threshold = 50 # Número mínimo de tuplas mortas para iniciar o autovacuum
autovacuum_vacuum_scale_factor = 0.02 # Percentual de tuplas mortas para iniciar
autovacuum_naptime = 1s # Intervalo entre execuções do autovacuum
autovacuum_vacuum_cost_delay = 1ms # Atraso no I/O para evitar sobrecarga
autovacuum_vacuum_cost_limit = 200 # Limite de custo de I/O do autovacuum
# Configuração do vacuum manual
vacuum_cost_delay = 20ms # Atraso no I/O durante o VACUUM
vacuum_cost_limit = 200 # Limite de custo de I/O do VACUUM
# Configuração de congelamento de transações
vacuum_freeze_min_age = 50000000 # Idade mínima de uma tupla para ser congelada
# Outras configurações do autovacuum para otimizar
autovacuum_analyze_scale_factor = 0.1 # Percentual para analisar tabelas
autovacuum_analyze_threshold = 50 # Número de tuplas para análise