Write-ahead log and recovery processing
In Chapter 2, Database Hardware, the PostgreSQL write-ahead log was introduced as the mechanism used to recover data lost in a crash. Its documentation starts at http://www.postgresql.org/docs/current/static/wal.html
The WAL is mainly a stream of information about database blocks. When you commit a data block change, if this is the first time since the last checkpoint the block has been changed, the entirety of the original block is written out. That means an 8 K WAL write even if you're changing only a single byte. This behavior is optional, but necessary if you want safe crash recovery; see the documentation on full_page_writes
for more information: http://www.postgresql.org/docs/current/static/runtime-config-wal.html. Once a page has been written out at least once after a checkpoint, just the information about the row that's changed needs to be written.
One side-effect of this structure is that just after a checkpoint, there is...