I have one question about checkponint . That is : can checkpoint be parallel?
PostgreSQL does not currently implement it that way. And it is hard to see what the benefit would be of doing so. But it should be theoretically possible.
It is said that checkpoint will be activated according to either conditions:
1)After last checkpoint, checkpoint_timeout seconds passed.
After the *start* of the last checkpoint. Provided that the last checkpoint has finished.
2)When shared_buffers memory above checkpoint_segments size is filled with data.
It is not shared_buffers that is measured, but the WAL files themselves (which effectively means wal_buffers usage) that is measured.
My experience is that :
There is only one checkpoint process there and works, and even when there are many data created during transactions,
There will also be only one checkpoint process deal with it
(maybe background writer or some other server process will deal it)?
The background writer and ordinary backends might write data (for their own reasons) that the checkpointer would have otherwise needed to write anyway.