WAL significa Write-Ahead Logging, ou Registro Antecipado de Gravação em português. É um recurso crucial para garantir a atomicidade, durabilidade e recuperabilidade das transações, mesmo em caso de falhas do sistema ou interrupções inesperadas.
Os parâmetros de configuração WAL podem ser usados para alterar o desempenho do banco de dados.
O PostgreSQL usa algo chamado de checkpoints(pontos de verificações) para garantir que os arquivos de dados foram atualizados com todas as informações gravadas antes de cada ponto de verificação.
O que max_wal_size
significa?
max_wal_size
é um parâmetro de configuração no PostgreSQL que define o tamanho máximo total que os arquivos de registro de transações (Write-Ahead Logs, ou WALs) podem ocupar no disco.
max_wal_size
é o tamanho máximo para permitir que o WAL cresça durante checkpoints automáticos. Este é um limite flexível; O tamanho do WAL pode exceder max_wal_size em circunstâncias especiais, como carga pesada, falha em archive_command ou archive_library ou em uma configuração wal_keep_size alta. Se esse valor for especificado sem unidades, ele será considerado megabytes. O padrão é 1 GB. Aumentar esse parâmetro pode aumentar o tempo necessário para a recuperação de falhas. Este parâmetro só pode ser definido no arquivo postgresql.conf ou na linha de comando do servidor.
Logs
Nos logs, você poderá ver esse tipo de mensagem:
2024-07-04 10:48:19.828 -03 [10421] LOG: checkpoints are occurring too frequently (26 seconds apart)
2024-07-04 10:48:19.828 -03 [10421] HINT: Consider increasing the configuration parameter "max_wal_size".
2024-07-04 10:48:19.829 -03 [10421] LOG: checkpoint starting: wal
Cada linha, traduzida , quer dizer:
- os pontos de verificação estão ocorrendo com muita frequência (26 segundos de intervalo)
- Considere aumentar o parâmetro de configuração “max_wal_size”.
- início do ponto de verificação: wal
Como aumentar max_wal_size?
Durante a restauração, se o volume de dados exceder o valor configurado de max_wal_size
, o PostgreSQL pode precisar fazer checkpoints mais frequentemente para manter o tamanho dos WALs dentro dos limites. Frequentes checkpoints podem afetar o desempenho e a eficiência da restauração. Aumentar o max_wal_size
permite que o PostgreSQL acumule mais dados antes de precisar executar um checkpoint, melhorando o desempenho da restauração.
#1 Acesse o postgres pelo terminal e veja onde está o arquivo de configuração. Execute esses dois comandos:
su postgres
psql
#2 execute show config_file.
postgres=# show config_file;
config_file
-----------------------------------------
/media/restauracao/psql/postgresql.conf
(1 row)
O resultado acima mostra que o arquivo de configuração no meu pc é /media/restauracao/psql/postgresql.conf
#3 edite esse arquivo usando um editor como nano ou vim,
sudo nano /caminho/para/postgresql.conf
#4 aumente o tamanho conforme desejado. Abaixo definir como 2GB
max_wal_size = '2GB'
Veja também: PostgreSQL: Instalando no CentOS 8