From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Hannu Krosing <hannu(at)tm(dot)ee> |
Cc: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: How to make lazy VACUUM of one table run in several transactions ? |
Date: | 2005-05-02 14:38:39 |
Message-ID: | 18298.1115044719@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hannu Krosing <hannu(at)tm(dot)ee> writes:
> A more general solution to the problem "VACUUM does not clean dead
> tuples fast enough due to an old transaction" problem is keeping the
> OldestXmin for each table separately as a list of table OIDs in each
> PGPROC.
> This would be automatically extandable to long COPY, or in fact any
> single SQL statement running in its implicit transaction by examining
> the query plan and reserving all tables touched by the query and its
> dependencies.
This is completely unworkable, since it amounts to assuming you know at
the start of a serializable transaction which tables it will touch. In
point of fact you can't even know that for the current query let alone
future ones --- consider user-defined functions.
(Not to mention that we can't expect to fit that much info into a fixed
amount of shared memory.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Stephen Frost | 2005-05-02 14:41:42 | Re: Using LDAP for authorization |
Previous Message | Tom Lane | 2005-05-02 14:33:59 | Re: Feature freeze date for 8.1 |