At 12:53p -0400 on Wed, 13 Aug 2008, Martijn van Oosterhout wrote:
> On Wed, Aug 13, 2008 at 12:41:41PM -0400, Kevin Hunter wrote:
>> Roughly, VACUUM simply reclaims/frees disk space, while VACUUM FULL
>> additionally reorganizes disk usage. I'm still don't know *why* this
>> leads to index bloat, however, just that it does. I must defer that
>> explication to a Postgres guru.
>
> Because VACUUM FULL needs to move stuff around in the table which means it
> need to mess around with the indexes (adding new entries). Ordinary
> VACUUM only needs to delete stuff so doesn't cause anywhere near as
> many problems.
Hmm. I get the reorganization bit, but so what? Since VACUUM FULL
already has an exclusive lock, what prevents it from updating the
indexes in-place to point to the new physical disk location? Why does
it need to create extra bloat?
Or, failing that, what's the reason to not issue a REINDEX CONCURRENTLY
automatically after a VACUUM FULL (or something to that effect)?
Kevin