Hi all,
I'd like to see if I get it right about pg_wal: it grows up to pretty
much max_wal_size, at which point a checkpoint is triggered.
If the server triggers a timed checkpoint before the pg_wal is at
max_wal_size, the system recycles the wals thus keeping the pg_wal
size lower than max_wal_size.
Is this correct? In particular, what is in simple words, the
discrimination between recycling a segment and creating a new one?
% sudo du -hs $PGDATA/pg_wal/
273M /postgres/13/data/pg_wal/
% psql -U postgres -c "show max_wal_size;" -c "show checkpoint_timeout;"
max_wal_size
--------------
1GB
(1 riga)
checkpoint_timeout
--------------------
5min
(1 riga)
and from the last log checkpoint entry:
2021-07-13 02:48:10.492 EDT [2424] LOG: checkpoint starting: time
2021-07-13 02:50:44.515 EDT [2424] LOG: checkpoint complete: wrote
9170 buffers (28.0%); 0 WAL file(s) added, 0 removed, 13 recycled;
write=148.878 s, sync=1.889 s, total=154.023 s; sync files=42,
longest=0.109 s, average=0.045 s; distance=217376 kB, estimate=217376
kB
Thanks,
Luca