Documentação da Configuração do PostgreSQL

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 e SORTs.
  • maintenance_work_mem: Memória alocada para operações de manutenção, como VACUUM e REINDEX.
  • 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

Você achou esse artigo útil?