Re: Autoanalyze CPU usage - Mailing list pgsql-performance

From Habib Nahas
Subject Re: Autoanalyze CPU usage
Date
Msg-id CAE1bBP6_=BmZa+xA32AJXF8-BU4h5XAK-aCKOVQLfYyUfVd2ug@mail.gmail.com
Whole thread Raw
In response to Re: Autoanalyze CPU usage  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Responses Re: Autoanalyze CPU usage
List pgsql-performance
The autoanalyze factor is set to 0.05 for the db, and we have not changed the default statistics target. 

The CPU spike occurred between 13:05 - 13:15. last_autoanalyze for the table shows a time of 12:49; last_autovacuum does not show any activity around this time for any table. Checkpoint logs are also normal around this time. I'd like to understand if there are any other sources of activity I should be checking for that would account for the spike. 

User workload is throttled to avoid excess load on the db, so a query is unlikely to have caused the spike. But we can dig deeper if other causes are ruled out. 

Thanks

On Tue, Dec 19, 2017 at 2:03 PM, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote:


On 12/19/2017 05:47 PM, Habib Nahas wrote:
> Hi,
>
> We operate an RDS postgres 9.5 instance and have periodic CPU spikes to
> 100%. These spikes appear to be due to autoanalyze kicking on our larger
> tables.
>
> Our largest table has 75 million rows and the autoanalyze scale factor
> is set to 0.05. 
>
> The documentation I've read suggests that the analyze always operates on
> the entire table and is not incremental. Given that supposition are
> there ways to control cost(especially CPU) of the autoanalyze operation?
> Would a more aggressive autoanalyze scale factor (0.01) help. With the
> current scale factor we see an autoanalyze once a week, query
> performance has been acceptable so far, which could imply that scale
> factor could be increased if necessary. 
>

No, reducing the scale factor to 0.01 will not help at all, it will
actually make the issue worse. The only thing autoanalyze does is
running ANALYZE, which *always* collects a fixed-size sample. Making it
more frequent will not reduce the amount of work done on each run.

So the first question is if you are not using the default (0.1), i.e.
have you reduced it to 0.05.

The other question is why it's so CPU-intensive. Are you using the
default statistics_target value (100), or have you increased that too?

regards

--
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgsql-performance by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: Autoanalyze CPU usage
Next
From: Habib Nahas
Date:
Subject: Re: Autoanalyze CPU usage