Re: Index size increases after VACUUM FULL - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Index size increases after VACUUM FULL
Date
Msg-id 48E24439.70509@enterprisedb.com
Whole thread Raw
In response to Re: Index size increases after VACUUM FULL  ("Gurjeet Singh" <singh.gurjeet@gmail.com>)
List pgsql-hackers
Gurjeet Singh wrote:
> On Tue, Sep 30, 2008 at 4:49 PM, Heikki Linnakangas <
> heikki.linnakangas@enterprisedb.com> wrote:
> 
>> Gurjeet Singh wrote:
>>
>>> On Tue, Sep 30, 2008 at 3:09 PM, Heikki Linnakangas <
>>> heikki.linnakangas@enterprisedb.com> wrote:
>>>
>>>> That's normal. VACUUM FULL creates new index pointers for the tuples it
>>>> moves, which can lead to a bigger index. If it bothers, REINDEX will pack
>>>> the indexes tighter again.
>>>>
>>>
>>> That explains it... and yes, REINDEX did bring the index size back to
>>> normal.
>>>
>>> Would it make sense to mention this in docs of VACUUM FULL? Either at
>>>
>>> http://www.postgresql.org/docs/8.3/static/routine-vacuuming.html
>>>
>>> or at
>>>
>>> http://www.postgresql.org/docs/8.3/static/sql-vacuum.html
>>>
>> Yeah, maybe. Want to suggest a wording?
> 
> 
> VACUUM FULL may cause a noticeable increase in size of the indexes of the
> tables that are vacuumed; this is because the VACUUM operation makes new
> entries in the index for the tuples/rows that have just been moved.
> 
> OR
> 
> VACUUM FULL may cause a noticeable increase in size of the indexes, that are
> on the  tables being vacuumed; this is because the VACUUM operation makes
> new entries in the index for the tuples/rows that have just been moved.
> 
> Followed By:
> 
> An appropriate REINDEX command (REINDEX database|table|index ) can reduce
> the size of such indexes.
> 
> 
>     I think it makes sense to put this on both the above mentioned URLs.

Looking closer, we do already have this in the 8.4devel version of the docs:

http://developer.postgresql.org/pgdocs/postgres/routine-vacuuming.html#VACUUM-BASICS

"... Another disadvantage of VACUUM FULL is that while it reduces table 
size, it does not reduce index size proportionally; in fact it can make 
indexes larger."

and in the next section:

"... Also, moving a row requires transiently making duplicate index 
entries for it (the entry pointing to its new location must be made 
before the old entry can be removed); so moving a lot of rows this way 
causes severe index bloat. "

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: "Dave Page"
Date:
Subject: Re: FSM rewrite committed, loose ends
Next
From: "Merlin Moncure"
Date:
Subject: Re: [pgadmin-hackers] Function management in PG