From: Gary Doades <gpd@gpdnet.co.uk>
To: Madison Kelly <linux@alteeve.com>
Cc: pgsql-performance@postgresql.org
Subject: Re: DB is slow until DB is reloaded
Date: Mon, 04 Jan 2010 20:40:02 +0000
Message-ID: <4B425222.7070905@gpdnet.co.uk> (raw)
In-Reply-To: <4B424FF6.40207@alteeve.com>
References: <4B423D22.7040803@alteeve.com>
<4B424215.70605@pinpointresearch.com>
<4B424FF6.40207@alteeve.com>
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
>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: gpd@gpdnet.co.uk, linux@alteeve.com
Subject: Re: DB is slow until DB is reloaded
In-Reply-To: <4B425222.7070905@gpdnet.co.uk>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox