Alvaro Herrera <alvherre@xxxxxxxxxxxxxx> writes: > On Tue, Jul 19, 2005 at 10:44:35PM -0400, Tom Lane wrote: >> If it's a matter of whether VACUUM removes rows or not, that's expected: >> open-transaction bookkeeping is done across the whole cluster. (This is >> not something simple to change, since we may have to consider >> transaction IDs in shared catalogs.) > I wonder if this restriction could be lifted if we tracked last-vacuum- > Xid per relation? No, that's unrelated. What is of concern is the open-transaction horizon. We could tighten things up by keeping a more complicated set of information in the PGPROC array --- rather than advertising a single transaction XMIN, each transaction would have to calculate and advertise both a "global" XMIN and a "local" XMIN (the latter counting only open transactions within your own database). This would then allow a more refined calculation in GetOldestXmin(). I'm inclined to think that the benefit wouldn't be worth the distributed cost of doing this in every GetSnapshotData() call ... regards, tom lane