Re: DB is slow until DB is reloaded

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 04/01/2010 8:30 PM, Madison Kelly wrote:
Steve Crawford wrote:
Madison Kelly wrote:
Hi all,

  I've got a fairly small DB...

  It slows down over time and I can't seem to find a way to get the
performance to return without doing a dump and reload of the database...

Some questions:

Is autovacuum running? This is the most likely suspect. If not, things will bloat and you won't be getting appropriate "analyze" runs. Speaking of which, what happens if you just run "analyze"?

And as long as you are dumping and reloading anyway, how about version upgrading for bug reduction, performance improvement, and cool new features.

Cheers,
Steve


Yup, I even tried manually running 'VACUUM FULL' and it didn't help. As for upgrading;

VACUUM FULL is not the same as VACUUM ANALYZE FULL. You shouldn't need the FULL option amyway.
a) I am trying to find a way around the dump/reload. I am doing it as a "last resort" only.
b) I want to keep the version in CentOS' repo.

I'd not tried simply updating the stats via ANALYZE... I'll keep an eye on performance and if it starts to slip again, I will run ANALYZE and see if that helps. If there is a way to run ANALYZE against a query that I am missing, please let me know.

From your queries it definitely looks like its your stats that are the problem. When the stats get well out of date the planner is choosing a hash join because it thinks thousands of rows are involved where as only a few are actually involved. Thats why, with better stats, the second query is using a loop join over very few rows and running much quicker.

Therefore it's ANALYZE you need to run as well as regular VACUUMing. There should be no need to VACUUM FULL at all as long as you VACUUM and ANALYZE regularly. Once a day may be enough, but you don't say how long it takes your database to become "slow".

You can VACUUM either the whole database (often easiest) or individual tables if you know in more detail what the problem is and that only certain tables need it.

Setting up autovacuum may well be sufficient.

Cheers,
Gary.






Madi


--
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance

[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux