Index bloat in 7.2

Started by Julian Scarfeover 21 years ago7 messagesgeneral
Jump to latest
#1Julian Scarfe
julian.scarfe@ntlworld.com

I've got a box running 7.2.1 (yes, I know :-() in which an index for a
rapidly turning over (and regularly vacuumed) table is growing steadily in
size. The index in question is on a timestamp field that is just set to
now() on the entry of the row, to enable the query that clears out old data
to an archive to run efficiently. Reindexing shrinks it back to a
reasonable size. Other indexes reach an equilibrium size and stay there. The
behaviour is fine on a system running 7.4.x: the index stays at a sensible
number of pages.

Is this likely to be related to a known issue with 7.2 that got fixed, or
have I got potentially more serious problems?

Thanks

Julian Scarfe

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Julian Scarfe (#1)
Re: Index bloat in 7.2

"Julian Scarfe" <julian.scarfe@ntlworld.com> writes:

I've got a box running 7.2.1 (yes, I know :-() in which an index for a
rapidly turning over (and regularly vacuumed) table is growing steadily in
size. The index in question is on a timestamp field that is just set to
now() on the entry of the row, to enable the query that clears out old data
to an archive to run efficiently. Reindexing shrinks it back to a
reasonable size. Other indexes reach an equilibrium size and stay there. The
behaviour is fine on a system running 7.4.x: the index stays at a sensible
number of pages.

That's exactly what I'd expect ...

regards, tom lane

#3Chris Browne
cbbrowne@acm.org
In reply to: Julian Scarfe (#1)
Re: Index bloat in 7.2

Clinging to sanity, julian.scarfe@ntlworld.com ("Julian Scarfe") mumbled into her beard:

I've got a box running 7.2.1 (yes, I know :-() in which an index for
a rapidly turning over (and regularly vacuumed) table is growing
steadily in size. The index in question is on a timestamp field
that is just set to now() on the entry of the row, to enable the
query that clears out old data to an archive to run efficiently.
Reindexing shrinks it back to a reasonable size. Other indexes reach
an equilibrium size and stay there. The behaviour is fine on a
system running 7.4.x: the index stays at a sensible number of pages.

Is this likely to be related to a known issue with 7.2 that got fixed, or
have I got potentially more serious problems?

The "empty pages not reclaimed" problem is something that did indeed
get fixed in the post-7.2 days. I _think_ it was 7.4, but it might
have been 7.3.

When we were running 7.2, we used to fairly regularly (e.g. - about
every other month) need to schedule maintenance windows in order to
reindex tables in order to resolve this issue. Some indices on
heavily-update tables would get pretty big "dead zones" that only
reindexing would fix.

The last it was discussed, there still seemed to be a _theoretical_
possibility of there still being a pathological case even in 7.4, but
nobody has reported it in practice. That case would result if you
dropped down to 1 index entry remaining "live" per page. That would
be a very "sparse" handling of things, leaving >98% of the page empty,
and there's no obvious mechanism to merge such pages back together.

But as you're deleting _all_ old entries, that would clear out the
relevant index pages entirely, so that they could be reclaimed.

In short, 7.4.x is indeed a good resolution to your issue.
--
let name="cbbrowne" and tld="gmail.com" in name ^ "@" ^ tld;;
http://www3.sympatico.ca/cbbrowne/sgml.html
"I would guess that he really believes whatever is politically
advantageous for him to believe." -- Alison Brooks, referring to
Michael Portillo, on soc.history.what-if

#4Julian Scarfe
julian.scarfe@ntlworld.com
In reply to: Julian Scarfe (#1)
Re: Index bloat in 7.2

From: "Christopher Browne" <cbbrowne@acm.org>

The "empty pages not reclaimed" problem is something that did indeed
get fixed in the post-7.2 days. I _think_ it was 7.4, but it might
have been 7.3.

In short, 7.4.x is indeed a good resolution to your issue.

From: "Tom Lane" <tgl@sss.pgh.pa.us>

That's exactly what I'd expect ...

Thanks both.

So it sounds like:

a) the issue is controllable with a regular (and in our case, just
occasional) reindex without any long term negative consequences

b) Only a dump-restore major version upgrade (which we'll do next time we
can take the system out for long enough) will avoid the issue.

Julian

#5Alvaro Herrera
alvherre@dcc.uchile.cl
In reply to: Julian Scarfe (#4)
Re: Index bloat in 7.2

On Mon, Dec 06, 2004 at 08:48:04AM -0000, Julian Scarfe wrote:

b) Only a dump-restore major version upgrade (which we'll do next time we
can take the system out for long enough) will avoid the issue.

"Long enough" could be a minutes or seconds issue if you use Slony-I,
I've heard ... (Of course you'd still need to fix your apps, which may
take somewhat longer than that.)

--
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
Y una voz del caos me habl� y me dijo
"Sonr�e y s� feliz, podr�a ser peor".
Y sonre�. Y fui feliz.
Y fue peor.

#6Julian Scarfe
julian.scarfe@ntlworld.com
In reply to: Alvaro Herrera (#5)
Re: Index bloat in 7.2

On Mon, Dec 06, 2004 at 08:48:04AM -0000, Julian Scarfe wrote:

b) Only a dump-restore major version upgrade (which we'll do next
time we
can take the system out for long enough) will avoid the issue.

On 6 Dec 2004, at 16:18, Alvaro Herrera wrote:

"Long enough" could be a minutes or seconds issue if you use Slony-I,
I've heard ... (Of course you'd still need to fix your apps, which may
take somewhat longer than that.)

A good point Alvaro, but I don't think Slony-I is compatible with 7.2,
which is the version I'm starting from. For upgrades from 7.3 onwards,
it's certainly a route worth considering.

Julian

#7Chris Browne
cbbrowne@acm.org
In reply to: Julian Scarfe (#1)
Re: Index bloat in 7.2

Quoth alvherre@dcc.uchile.cl (Alvaro Herrera):

On Mon, Dec 06, 2004 at 08:48:04AM -0000, Julian Scarfe wrote:

b) Only a dump-restore major version upgrade (which we'll do next time we
can take the system out for long enough) will avoid the issue.

"Long enough" could be a minutes or seconds issue if you use Slony-I,
I've heard ... (Of course you'd still need to fix your apps, which may
take somewhat longer than that.)

Unfortunately, Slony-I does not support versions of PostgreSQL earlier
than 7.3.3. It needs namespace support...
--
(format nil "~S@~S" "cbbrowne" "gmail.com")
http://www.ntlug.org/~cbbrowne/advocacy.html
How come you don't ever hear about gruntled employees?