Re: Why frequently updated tables are an issue - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Why frequently updated tables are an issue
Date
Msg-id 10079.1087069547@sss.pgh.pa.us
Whole thread Raw
In response to Re: Why frequently updated tables are an issue  (Jan Wieck <JanWieck@Yahoo.com>)
Responses Re: Why frequently updated tables are an issue
List pgsql-hackers
Jan Wieck <JanWieck@Yahoo.com> writes:
> But a per relation bitmap that tells if a block is a) free of dead 
> tuples and b) all remaining tuples in it are frozen could be used to let 
> vacuum skip them (there can't be anything to do). The bit would get 
> reset whenever the block is marked dirty. This would cause vacuum to 
> look at mainly recently touched blocks, likely to be found in the buffer 
> cache anyway and thus dramatically reduce the amount of IO and thereby 
> make high frequent vacuuming less expensive.

I don't think it would help very much to define a bit like that --- I
can't believe that very many pages would contain only frozen tuples,
unless you were to adopt an aggressive policy of using VACUUM FREEZE
a lot.

It might be interesting though to have some kind of "fast vacuum" mode
that doesn't worry about freezing tuples, but only reclaiming dead ones.
This could look at only recently touched pages, with perhaps the
cooperation of the bgwriter to keep track of candidate pages.  (You'd
still have to do full-database scans for freezable tuples occasionally ...
but not very often.)

The main thing I don't see how to handle efficiently is getting rid of
the index entries for dead rows.  The present indexam API is designed
for getting rid of index entries wholesale, but you'd need something
that works better for retail removal to approach vacuuming this way.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Jan Wieck
Date:
Subject: Re: Why frequently updated tables are an issue
Next
From: "Thomas Hallgren"
Date:
Subject: Re: I just got it: PostgreSQL Application Server -- a new project.