Looking at a VACUUM's WAL records makes me think twice about the way we
issue a VACUUM.
1. First we scan the heap, issuing a HEAP2 clean record for every block
that needs cleaning.
2. Then we scan the index, issuing WAL records as appropriate.
3. Then we rescan the heap, issuing a HEAP2 clean record for every
block.
I don't see a reason why we would issue 2 WAL records per block for a
VACUUM, nor why we would prune and remove in two steps, dirtying the
block each time. Seems like we could write approximately half the amount
of data that we do.
Surely we can come up with a better plan than that one?
-- Simon Riggs www.2ndQuadrant.comPostgreSQL Training, Services and Support