On Wed, 2002-10-16 at 02:29, Gavin Sherry wrote:
> On 16 Oct 2002, Hannu Krosing wrote:
>
> > On Wed, 2002-10-16 at 05:22, Gavin Sherry wrote:
> > > Hi all,
> > >
> > > I'm thinking that there is an improvement to vacuum which could be made
> > > for 7.4. VACUUM FULLing large, heavily updated tables is a pain. There's
> > > very little an application can do to minimise dead-tuples, particularly if
> > > the table is randomly updated. Wouldn't it be beneficial if VACUUM could
> > > have a parameter which specified how much of the table is vacuumed. That
> > > is, you could specify:
> > >
> > > VACUUM FULL test 20 precent;
> >
> > What about
> >
> > VACUUM FULL test WORK 5 SLEEP 50;
> >
> > meaning to VACUUM FULL the whole table, but to work in small chunks and
> > relaese all locks and let others access the tables between these ?
>
> Great idea. I think this could work as a complement to the idea I had. To
> answer Tom's question, how would we know what we've vacuumed, we could
> store the range of tids we've vacuumed in pg_class. Or, we could store the
> block offset of where we left off vacuuming before and using stats, run
> for another X% of the heap. Is this possible?
Why couldn't you start your % from the first rotten/dead tuple? Just
reading through trying to find the first tuple to start counting from
wouldn't hold locks would it? That keeps you from having to track stats
and ensures that X% of the tuples will be vacuumed.
Greg