On Thu, Sep 17, 2009 at 12:18 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> It's no different from the situation where another backend UPDATEs the
>> row under your nose, but it's not something you want to do automatically
>> without notice.
>
> Exactly. The application is typically going to throw a "concurrent
> update" type of error when this happens, and we don't want magic
> background operations to cause that.
OK, that makes sense. It seems like we more or less have consensus on
what to do here.
- Change VACUUM FULL to be the equivalent of CLUSTER-without-index.
- Add some kind of tuple mover that can be invoked when it's necessary
to incrementally compact a table in place.
This might not cover every possible use case, but it seems that it
can't be any worse than what we have now. The tuple mover seems like
a workable substitute for the current VACUUM FULL in cases where space
is limited, and by virtual of being incremental it can be used in
situations where the current VACUUM FULL can't. There could be a loss
of functionality of the tuple mover is slower than VACUUM FULL, but
the consensus seems to be that's almost impossible to contemplate.
The new VACUUM FULL behavior, OTOH, should be faster than the existing
one in cases where space consumption is not an issue.
So nothing gets any worse, and some things get better.
But who is implementing this?
...Robert