Re: CPU-intensive autovacuuming - Mailing list pgsql-general

From Matthew T. O'Connor
Subject Re: CPU-intensive autovacuuming
Date
Msg-id 42A4EB56.5080905@zeut.net
Whole thread Raw
In response to Re: CPU-intensive autovacuuming  (Phil Endecott <spam_from_postgresql_general@chezphil.org>)
Responses Re: CPU-intensive autovacuuming  (Phil Endecott <spam_from_postgresql_general@chezphil.org>)
List pgsql-general
Phil Endecott wrote:

> Following up on my own post from last night:
>
> > Could it be that there is some code in autovacuum that is O(n^2) in
> > the number of tables?
>
> Browsing the code using webcvs, I have found this:
>
> for (j = 0; j < PQntuples(res); j++)
> {
>     tbl_elem = DLGetHead(dbs->table_list);
>     while (tbl_elem != NULL)
>     {
>
> I haven't really tried to understand what is going on in here, but it
> does look like it is getting the result of the "pg_class join stats"
> query and then matching it up against its internal list of tables
> using nested loops, which is undoubtedly O(n^2) in the number of tables.
>
> Have I correctly understood what is going on here?


Indeed you have.  I have head a few similar reports but perhaps none as
bad as yours.  One person put a small sleep value so that it doesn't
spin so tight.  You could also just up the sleep delay so that it
doesn't do this work quite so often.  No other quick suggestions.


pgsql-general by date:

Previous
From: Dianne Yumul
Date:
Subject: Postgresql fails to start?
Next
From:
Date:
Subject: how to get sequence list ?