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

From Gurjeet Singh
Subject Index size increases after VACUUM FULL
Date
Msg-id 65937bea0809300143n1492bc09hc410b7ef5eb8e42@mail.gmail.com
Whole thread Raw
Responses Re: Index size increases after VACUUM FULL  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
List pgsql-hackers
<div dir="ltr">Hi All,<br /><br />    I noticed something strange today, and thought I should report it. I vacuumed a
database,and as expected, one of the table's size decreased (other table were VACUUMed individually earlier); but o my
astonishment,the size of the UNIQUE KEY index on one of the columns increased. Here's the session log ( the table is:
table_1,and the index is: <span style="font-family: courier new,monospace;">uk_table-1_url</span>):<br /><br /><span
style="font-family:courier new,monospace;">postgres=> select relname, pg_size_pretty( pg_relation_size( oid ) ),
pg_size_pretty(pg_total_relation_size( oid ) ) from pg_class where relnamespace = ( select oid from pg_namespace where
nspname= 'web' ) order by pg_relation_size( oid ) desc;</span><br style="font-family: courier new,monospace;" /><span
style="font-family:courier new,monospace;">        relname        | pg_size_pretty | pg_size_pretty</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier
new,monospace;">-----------------------+----------------+----------------</span><brstyle="font-family: courier
new,monospace;"/><span style="font-family: courier new,monospace;"> table_1               | 90 MB          | 153
MB</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;"> url                  | 67 MB          | 101 MB</span><br style="font-family: courier new,monospace;"
/><spanstyle="font-family: courier new,monospace;"> uk_table-1_url        | 63 MB          | 63 MB</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> uk_url_url            |
34MB          | 34 MB</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;"> link_prefix_pkey     | 16 kB          | 16 kB</span><br style="font-family: courier new,monospace;"
/><spanstyle="font-family: courier new,monospace;"> random_url_seq        | 8192 bytes     | 8192 bytes</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> link_prefix           |
8192bytes     | 32 kB</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;">(7rows)</span><br style="font-family: courier new,monospace;" /><br style="font-family: courier
new,monospace;"/><span style="font-family: courier new,monospace;">postgres=> vacuum full;</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;">WARNING:  skipping
"pg_type"--- only table or database owner can vacuum it</span><br style="font-family: courier new,monospace;" /><span
style="font-family:courier new,monospace;"><a lot of similar warnings></span><br style="font-family: courier
new,monospace;"/><span style="font-family: courier new,monospace;">VACUUM</span><br style="font-family: courier
new,monospace;"/><span style="font-family: courier new,monospace;">postgres=> select relname, pg_size_pretty(
pg_relation_size(oid ) ), pg_size_pretty( pg_total_relation_size( oid ) ) from pg_class where relnamespace = ( select
oidfrom pg_namespace where nspname = 'web' ) order by pg_relation_size( oid ) desc;</span><br style="font-family:
couriernew,monospace;" /><span style="font-family: courier new,monospace;">        relname        | pg_size_pretty |
pg_size_pretty</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;">-----------------------+----------------+----------------</span><brstyle="font-family: courier
new,monospace;"/><span style="font-family: courier new,monospace;"> table_1               | 75 MB          | 147
MB</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;"> uk_table-1_url       | 72 MB          | 72 MB</span><br style="font-family: courier new,monospace;"
/><spanstyle="font-family: courier new,monospace;"> url                   | 67 MB          | 101 MB</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> uk_url_url            |
34MB          | 34 MB</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;"> link_prefix_pkey     | 16 kB          | 16 kB</span><br style="font-family: courier new,monospace;"
/><spanstyle="font-family: courier new,monospace;"> random_url_seq        | 8192 bytes     | 8192 bytes</span><br
style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> link_prefix           |
8192bytes     | 32 kB</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier
new,monospace;">(7rows)</span><br style="font-family: courier new,monospace;" /><br style="font-family: courier
new,monospace;"/><span style="font-family: courier
new,monospace;">postgres=>                                                      </span><br clear="all" /><br />   
Shouldwe treat this as expected behaviour, or do we dig deeper? There was absolutely no other activity on the database
duringall this.<br /><br />Best regards,<br />-- <br />gurjeet[.singh]@EnterpriseDB.com<br />singh.gurjeet@{ gmail |
hotmail| indiatimes | yahoo }.com<br /><br />EnterpriseDB      <a
href="http://www.enterprisedb.com">http://www.enterprisedb.com</a><br/><br />Mail sent from my BlackLaptop device<br
/></div>

pgsql-hackers by date:

Previous
From: KaiGai Kohei
Date:
Subject: [BUG] pg_ctl restart at the vanilla v8.3.4
Next
From: Heikki Linnakangas
Date:
Subject: Re: Index size increases after VACUUM FULL