Re: Database size growing over time and leads to performance impact

From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: gnanam(at)zoniac(dot)com
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Database size growing over time and leads to performance impact
Date: 2010-03-27 14:41:23
Message-ID: 4BAE1913.3090905@lelarge.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-performance

Le 27/03/2010 14:00, Gnanakumar a écrit :
> [...]
> We're using PostgreSQL 8.2. Recently, in our production database, there was
> a severe performance impact.. Even though, we're regularly doing both:
>
> 1. VACUUM FULL ANALYZE once in a week during low-usage time and
>
> 2. ANALYZE everyday at low-usage time
>

Which means you can be sure you have bloated indexes.

> Also, we noticed that the physical database size has grown upto 30 GB. But,
> if I dump the database in the form of SQL and import it locally in my
> machine, it was only 3.2 GB. Then while searching in Google to optimize
> database size, I found the following useful link:
>
> http://www.linuxinsight.com/optimize_postgresql_database_size.html
>
> It says that even vacuumdb or reindexdb doesn't really compact database
> size, only dump/restore does because of MVCC architecture feature in
> PostgreSQL and this has been proven here.
>

VACUUM doesn't compact a database. VACUUM FULL does for tables. REINDEX
does for index.

And this is why, I think, you have an issue. You do VACUUM FULL each
week, but don't do a REINDEX.

> So, finally we decided to took our production database offline and performed
> dump/restore. After this, the physical database size has also reduced from
> 30 GB to 3.5 GB and the performance was also very good than it was before.
>

Not surprising, indexes are recreated.

> Physical database size was found using the following command:
>
> du -sh /usr/local/pgsql/data/base/<database-oid>
>
> I also cross-checked this size using
> "pg_size_pretty(pg_database_size(datname))".
>
> Questions
>
> 1. Is there any version/update of PostgreSQL addressing this issue?
>

If you still want to use VACUUM FULL, then you need to use REINDEX. But
you shouldn't need VACUUM FULL. Configure autovacuum so that your tables
don't get bloated.

> 2. How in real time, this issues are handled by other PostgreSQL users
> without taking to downtime?
>

Using the autovacuum to VACUUM and ANALYZE when it's really needed.

> 3. Any ideas or links whether this is addressed in upcoming PostgreSQL
> version 9.0 release?
>

--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Nilesh Govindarajan 2010-03-28 17:11:05 Socket & TCP connections
Previous Message Tomeh, Husam 2010-03-27 13:47:53 Re: Database size growing over time and leads to performance impact

Browse pgsql-performance by date

  From Date Subject
Next Message Reydan Cankur 2010-03-27 20:05:59 Pgbench TPS Calculation
Previous Message Tomeh, Husam 2010-03-27 13:47:53 Re: Database size growing over time and leads to performance impact