Thread: UNDO

UNDO

From
Carlos Benkendorf
Date:
Hi,

In 7.4 manual is written than UNDO is not implemented.

What it really means?

When should PostgreSQL do an UNDO? Are not all data
only written to disk when it is committed? Why should
Postgresql do an undo?

Thanks in advance!


______________________________________________________________________

Yahoo! Mail - agora com 100MB de espaço, anti-spam e antivírus grátis!
http://br.info.mail.yahoo.com/

Re: UNDO

From
Tom Lane
Date:
=?iso-8859-1?q?Carlos=20Benkendorf?= <chbenkendorf@yahoo.com> writes:
> In 7.4 manual is written than UNDO is not implemented.

> What it really means?

Not much.  It's unlikely that we ever will implement UNDO in the sense
that passage is talking about --- which is to say, reversing out the
effects of a failed transaction by scanning the WAL log backwards.
Pretty much all the current pghackers agree that MVCC is a better
approach.

MVCC means that you have to do periodic VACUUMs to get rid of cruft
from failed transactions, so it's not like it's a zero-cost substitute
for UNDO.  But the nice thing about it is that the overhead
is paid in a background maintenance task, rather than being something
that has to happen in a foreground server task whenever a transaction
fails.  Cleaning up via UNDO means that live clients are waiting for
you to do the cleanup.

There used to be a contingent that thought we should switch to using
UNDO because Oracle does it that way and Oracle must be right.  But
we've gained more self-confidence since, I think.

            regards, tom lane