On 09/20/2011 09:21 AM, Jon Nelson wrote:
> Isn't the WAL basically COW?
Nope, it's a lot more like a filesystem journal - though it includes all
data, not just metadata like filesystem journals usually do.
Now, you could argue that PostgreSQL uses a copy-on-write like system to
maintain row versions so that already-running statements (or
SERIALIZABLE transactions) don't see data from the future and to
maintain rollback data for uncommitted transactions. It's the *new* data
that gets written to the WAL, though, not the old data.
(OK, if you have full_page_writes enabled you might get a mix of old and
new data written to WAL, but that's an implementation detail).
--
Craig Ringer