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
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 |