Re: BUG #5915: OldSerXidAdd inflates pg_serial too much

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: YAMAMOTO Takashi <yamt(at)mwd(dot)biglobe(dot)ne(dot)jp>, pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5915: OldSerXidAdd inflates pg_serial too much
Date: 2011-03-04 20:42:37
Message-ID: 4D714EBD.9020409@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 04.03.2011 22:33, Kevin Grittner wrote:
> Heikki Linnakangas<heikki(dot)linnakangas(at)enterprisedb(dot)com> wrote:
>
>> Hmm, if I'm reading that function correctly, it makes sure that
>> when headPage< 0 (which implies that the SLRU has not been used
>> since startup, right? )
>
> No, look at the bottom of OldSerXidSetActiveSerXmin() -- cleanup of
> segments is done incrementally, but when it finds it has cleaned up
> *everything* it sets headPage = -1. I believe that should only
> happen when the xmin has moved past the end of the segment.
>
>> it zeroes out the whole SLRU file, not only the currently active
>> region.
>
> That's not the intent. If it's doing that, it's accidental. It is
> trying to zero from the start of a segment, if a new one is needed.

Sorry, I was not entirely clear. It clears all pages from the start of
the segment, up to the last currently active page, even if the active
region from tailXid to headXid only spans a couple of pages somewhere in
the middle of the segment. It seems pointless to clear the pages in the
beginning of the segment in that case.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Robert Haas 2011-03-04 20:42:49 Re: BUG #5869: postgresql corrupts unquoted non-ascii chars in column aliases
Previous Message Kevin Grittner 2011-03-04 20:33:40 Re: BUG #5915: OldSerXidAdd inflates pg_serial too much