On Sat, 2007-01-20 at 09:41 +1100, Russell Smith wrote: > Darcy Buskermolen wrote: > > [snip] > > > > Another thought, is it at all possible to do a partial vacuum? ie spend the > > next 30 minutes vacuuming foo table, and update the fsm with what hew have > > learned over the 30 mins, even if we have not done a full table scan ? > > > There was a proposal for this, but it was dropped on 2 grounds. > 1. partial vacuum would mean that parts of the table are missed, the > user could never vacuum certain parts and transaction wraparound would > get you. You may also have other performance issues as you forgot > certian parts of the table Partial vacuum would still be possible if you remembered where you got to in the VACUUM and then started from that same point next time. It could then go to the end of the table and wrap back around. > 2. Index cleanup is the most expensive part of vacuum. So doing a > partial vacuum actually means more I/O as you have to do index cleanup > more often. Again, not necessarily. A large VACUUM can currently perform more than one set of index scans, so if you chose the right stopping place for a partial VACUUM you need never incur any additional work. It might even save effort in the long run. I'm not necessarily advocating partial VACUUM, just pointing out that the problems you raise need not be barriers to implementation, should that be considered worthwhile. -- Simon Riggs EnterpriseDB http://www.enterprisedb.com