Re: FSM rewrite committed, loose ends - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: FSM rewrite committed, loose ends
Date
Msg-id 48E225DC.5000404@enterprisedb.com
Whole thread Raw
In response to Re: FSM rewrite committed, loose ends  (Dimitri Fontaine <dfontaine@hi-media.com>)
List pgsql-hackers
Dimitri Fontaine wrote:
> Le mardi 30 septembre 2008, Heikki Linnakangas a écrit :
>> Dimitri Fontaine wrote:
>>> Question for the slow readers: this new FSM scheme being dynamic, it's no
>>> longer possible to have table bloat, right?
>>> (where table bloat is full of dead-for-any-transaction tuples, and you
>>> have to CLUSTER or VACUUM FULL to be able to reuse the space it takes)
>> No, it didn't change that. Regular VACUUMing or autovacuum is still needed.
> 
> But IIUC correctly it's no longer possible for PostgreSQL to forget about 
> where bloat is, so regular vacuuming will know how clean out any bloat any 
> time?

That has never been a problem. VACUUM has always found and removed all 
dead tuples.

> For example, a purge script which does a large DELETE could overrun the 
> max_fsm_pages setting, resulting in permanent bloat (until table rewrite). 
> This large DELETE will now be tracked completely by the new FSM, so 
> autovacuum will be able to have the space reused later?

It isn't really permanent. If you increase max_fsm_pages, restart and 
vacuum again, vacuum will pick up all the empty pages.

But yes, the new FSM is always large enough to hold information about 
all pages in the relation, so you can no longer get table bloat because 
of a too small max_fsm_pages or max_fsm_relations setting.

You can still get table bloat because of other reasons, like not 
vacuuming often enough.

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


pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: FSM rewrite committed, loose ends
Next
From: Tom Lane
Date:
Subject: Re: [BUG] pg_ctl restart at the vanilla v8.3.4