I realize this thread is old, but I just conducted an experiment with pg
8.0.10 and a transaction with a SERIALIZABLE isolation level does
prevent VACUUM from reclaiming rows that were created and then obsoleted
in a subsequent transaction.
Martijn van Oosterhout wrote:
> On Thu, Oct 19, 2006 at 04:25:09PM -0400, Joseph S wrote:
>>> The problem is that the "old" transaction can see effects of later
>>> started transactions, so VACUUM can't delete the later stuff either...
>> How can it see effects of transactions that started after it?
>
> Check the documentation for the difference the READ COMMITTED and
> SERIALIZABLE transaction. The former (the default) will see the results
> of any committed transactions, even if they started later.
>
> http://www.postgresql.org/docs/8.1/interactive/transaction-iso.html#XACT-READ-COMMITTED
>
> Have a nice day,