Re: "Compacting" a relation - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: "Compacting" a relation
Date
Msg-id 1170676526.3645.295.camel@silverbirch.site
Whole thread Raw
In response to Re: "Compacting" a relation  (Bruce Momjian <bruce@momjian.us>)
Responses Re: "Compacting" a relation
List pgsql-hackers
On Sat, 2007-02-03 at 22:11 -0500, Bruce Momjian wrote:
> Tom Lane wrote:
> > Peter Eisentraut <peter_e@gmx.net> writes:
> > > vacuumlazy.c contains a hint "Consider compacting this relation" but AFAICT, 
> > > there is no indication anywhere how "compacting" is supposed to be achieved.
> > > I guess this means VACUUM FULL or CLUSTER, but I don't think the hint can be 
> > > processed effectively by a user.
> > 
> > So change it ...
> 
> New message is:
> 
>   errhint("Consider using VACUUM FULL on this relation or increasing the configuration parameter
\"max_fsm_pages\".")));
> 

The change of wording may be appropriate, but it is triggered when
if (vacrelstats->tot_free_pages > MaxFSMPages)

So if you VACUUM a 15+GB table and it has only 1% freespace then it will
still generate this message. Hopefully you'd agree that the message
would be inappropriate in that case.

It's also inappropriate because this message is generated *prior* to
doing lazy_truncate_heap(), which could easily remove lots of empty
pages anyhow. That might reduce it to less than MaxFSMPages anyhow, so
it can currently be triggered in wholly inappropriate situations.

So I suggest that we move this wording after lazy_truncate_heap() in
lazy_vacuum_rel() *and* we alter the hint so that it only suggests
VACUUM FULL if the table has 20% fragmentation, whatever its size.

Happy to drop a patch for this, if people agree.

--  Simon Riggs              EnterpriseDB   http://www.enterprisedb.com




pgsql-hackers by date:

Previous
From: "Simon Riggs"
Date:
Subject: Re: SRF optimization question
Next
From: Tom Lane
Date:
Subject: Re: [PATCHES] Fix "database is ready" race condition