On 8/9/07, Simon Riggs <[EMAIL PROTECTED]> wrote:
> Whether I got the exact details of frugging & depruning correct or not:
> if a tuple version is removed, then VACUUM doesn't need to remove it
> later, so any non-VACUUM removal of rows must defer a VACUUM.
ISTM that you are worried about the cases where a tuple is HOT updated
and hence can be pruned/defragged, but only if we revisit the page at
a later time.
What if we just track the amount of potentially dead space in the relation
(somebody had suggested that earlier in the thread) ? Every committed
UPDATE/DELETE and aborted UPDATE/INSERT would increment
the dead space. Whenever page fragmentation is repaired, either during
normal operation or during vacuum, the dead space is reduced by the
amount of reclaimed space. Autovacuum triggers whenever the percentage
of dead space increases beyond a threshold.
We can some fine tuning to track the space consumed by redirect-dead