On Thu, 2007-08-09 at 12:39 +0530, Pavan Deolasee wrote:
> No, pruning removes all dead tuples, irrespective of whether they are
> HOT or COLD updated and whether they are heap-only or not. It
> handles line pointer redirection and marks
> all dead tuples as ~LP_USED. Defragging just repairs the fragmentation
> by rearranging LP_USED tuples.
>
>
> It's easily possible that 100% of the cold updates and deletes
> are
> removed by defragging because of HOT updates. It would be
> pointless to
> trigger a VACUUM when it might find nothing to clear up. Its
> also
> possible that the deletes are at one end of the table and the
> updates at
> the other. So we really need to keep track of the effects of
> defragging
> dead cold updates and deletes, so they can be subtracted from
> the cold
> update + deletes.
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.
-- Simon Riggs EnterpriseDB http://www.enterprisedb.com