it-swarm.com.de

Die richtige Abfrage, um die aktuelle Anzahl von Verbindungen in einer PostgreSQL-Datenbank abzurufen

Welche der folgenden beiden ist genauer?

select numbackends from pg_stat_database;

select count(*) from pg_stat_activity;
114
Murali VP

Diese beiden Anforderungen sind nicht gleichbedeutend. Die äquivalente Version der ersten wäre:

SELECT sum(numbackends) FROM pg_stat_database;

In diesem Fall würde ich davon ausgehen, dass diese Version etwas schneller ist als die zweite, einfach weil weniger Zeilen zu zählen sind. Aber Sie werden wahrscheinlich keinen Unterschied messen können.

Beide Abfragen basieren auf genau den gleichen Daten, sodass sie gleich genau sind.

181
Magnus Hagander

Die folgende Abfrage ist sehr hilfreich

select  * from
(select count(*) used from pg_stat_activity) q1,
(select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) q2,
(select setting::int max_conn from pg_settings where name=$$max_connections$$) q3;
14
tbo

Sie können definitiv unterschiedliche Ergebnisse liefern. Das Bessere ist

select count(*) from pg_stat_activity;

Dies liegt daran, dass es Verbindungen zu WAL-Absenderprozessen enthält, die als reguläre Verbindungen behandelt werden und auf max_connections Angerechnet werden.

Siehe max_wal_senders

2
gargii

Die Anzahl der TCP -Verbindungen hilft Ihnen. Denken Sie daran, dass es sich nicht um eine bestimmte Datenbank handelt

netstat -a -n | find /c "127.0.0.1:13306"