Re: Quick idea for reducing VACUUM contention - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: Quick idea for reducing VACUUM contention
Date
Msg-id 20070731152542.GG5103@alvh.no-ip.org
Whole thread Raw
In response to Re: Quick idea for reducing VACUUM contention  (Decibel! <decibel@decibel.org>)
List pgsql-hackers
Decibel! wrote:
> On Jul 30, 2007, at 8:00 PM, Alvaro Herrera wrote:
>> ITAGAKI Takahiro wrote:
>>> Alvaro Herrera <alvherre@commandprompt.com> wrote:
>>>>> I think we might need additional "freezing-xmax" operations to avoid
>>>>> XID-wraparound in the first path of vacuum, though it hardly occurs.
>>>>
>>>> I'm not sure I follow.  Can you elaborate?  Do you mean storing a
>>>> separate relfrozenxmax for each table or something like that?
>>>
>>> We need to work around wraparound of xmax in dead tuples. If we miss to
>>> vacuum them and XID is wrapped, we cannot remove them until the next
>>> XID-wraparound, because we treat them to be deleted in the *future*.
>>
>> Oh, but this should not be a problem, because a tuple is either frozen
>> or removed completely -- xmax cannot precede xmin.
>
> What if it's frozen, then deleted, and then we wrap on xmax? Wouldn't that 
> make the tuple re-appear?

That cannot happen, because the next vacuum will remove the tuple if the
Xmax is committed.  If the deleting transaction aborts, then vacuum will
set Xmax to Invalid (see heap_freeze_tuple in heapam.c).

One potential problem you would see is if the deleting transaction marks
it deleted and then not commit for 2 billion transactions, thus vacuum
is not able to remove it because it shows up as delete-in-progress.
However there are plenty other problems you would hit in that case
(autovacuum starting to misbehave being the first you would probably
notice).

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


pgsql-hackers by date:

Previous
From: Decibel!
Date:
Subject: Re: Quick idea for reducing VACUUM contention
Next
From: Alvaro Herrera
Date:
Subject: Re: Reducing Transaction Start/End Contention