Parameter · Write-Ahead Log / Checkpoints
checkpoint_warning
Sets the maximum time before warning if checkpoints triggered by WAL volume happen too frequently. Write a message to the server log if checkpoints caused by the filling of WAL segment files happen more frequently than this amount of time. 0 disables the warning.
- Default:
30s - Type: integer (s)
- Range: 0 … max (2147483647)
- Applies: Reload
In plain words
If checkpoints are happening because WAL fills up too quickly, not because of the timer, the server is writing more than max_wal_size allows for comfortably. checkpoint_warning makes PostgreSQL write a hint in the log when two such checkpoints happen less than this many seconds apart (default 30 s).
For DBAs and operators
Only WAL-triggered checkpoints count (not timed, manual or shutdown ones). The message is:
LOG: checkpoints are occurring too frequently (12 seconds apart)HINT: Consider increasing the configuration parameter "max_wal_size".
0 disables the warning. It does not change behaviour, only logging. Even without the warning, compare num_requested to num_timed in pg_stat_checkpointer and look for checkpoint starting: wal in the log (with log_checkpoints = on, the default since PostgreSQL 15).
How to change it
Change in postgresql.conf or ALTER SYSTEM, then run SELECT pg_reload_conf().