Re: Getting pg_stat_database data takes significant time

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: hubert depesz lubaczewski <depesz(at)depesz(dot)com>
Cc: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Getting pg_stat_database data takes significant time
Date: 2021-08-11 14:16:13
Message-ID: 202108111416.4ddlilf6hr6r@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Two things,

1. this depends on reading the stats file; that's done once per
transaction. So if you run the query twice in a transaction, the second
time will take less time. You can know how much time is spent reading
that file by subtracting both times.

2. EXPLAIN (VERBOSE) will tell you which functions are being called by
the query. One of those loops across all live backends. Is that
significant? You could measure by creating an identical view but
omitting pg_stat_db_numbackends. Does it take the same time as the
view? If not, then you know that looping around all live backends is
slow.

If the problem is (1) then you could have less tables, so that the file
is smaller and thus faster to read, but I don't think you'll like that
answer; and if the problem is (2) then you could reduce max_connections,
but I don't think you'll like that either.

I suspect there's not much you can do, other than patch the monitoring
system to not read that view as often.

--
Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/
"Use it up, wear it out, make it do, or do without"

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message hubert depesz lubaczewski 2021-08-11 16:33:55 Re: Getting pg_stat_database data takes significant time
Previous Message Adrian Klaver 2021-08-11 14:13:49 Re: php connection failure