Aidan Van Dyk wrote:
* Heikki Linnakangas <heikki@xxxxxxxxxxxxxxxx> [070305 09:46]:
In fact, getting rid of vacuum full, or changing it to work like
cluster, has been proposed in the past. The use case really is pretty
narrow; cluster is a lot faster if there's a lot of unused space in the
table, and if there's not, vacuum full isn't going to do much so there's
not much point running it in the first place. The reason it exists is
largely historical, there hasn't been a pressing reason to remove it either.
I've never used CLUSTER, because I've always heard murmerings of it not
being completely MVCC safe. From the TODO:
* CLUSTER
o Make CLUSTER preserve recently-dead tuples per MVCC
requirements
Good point, I didn't remember that. Using cluster in an environment like
the OP has, cluster might actually break the consistency of concurrent
transactions.
But the documents don't mention anything about cluster being unsafe.
Really? <checks docs>. Looks like you're right. Should definitely be
mentioned in the docs.
AFAIK, Vacuum full doesn't suffer the same MVCC issues that cluster
does. Is this correct?
That's right. Vacuum full goes to great lengths to be MVCC-safe.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com