Welche der folgenden beiden ist genauer?
select numbackends from pg_stat_database;
select count(*) from pg_stat_activity;
sql
database
postgresql
dbconnection
Murali VP
quelle
quelle
Antworten:
Diese beiden Anforderungen sind nicht gleichwertig. Die äquivalente Version der ersten wäre:
In diesem Fall würde ich erwarten, dass diese Version etwas schneller als die zweite ist, einfach weil weniger Zeilen zu zählen sind. Aber Sie werden wahrscheinlich keinen Unterschied messen können.
Beide Abfragen basieren auf genau denselben Daten, sodass sie gleich genau sind.
quelle
Die folgende Abfrage ist sehr hilfreich
quelle
Sie können definitiv unterschiedliche Ergebnisse liefern. Der bessere ist
Dies liegt daran, dass es Verbindungen zu WAL-Absenderprozessen enthält, die als reguläre Verbindungen behandelt werden und dazu zählen
max_connections
.Siehe max_wal_senders
quelle
Aggregation aller Postgres-Sitzungen nach ihrem Status (wie viele sind untätig, wie viele tun etwas ...)
quelle
Die Anzahl der TCP-Verbindungen hilft Ihnen dabei. Denken Sie daran, dass es sich nicht um eine bestimmte Datenbank handelt
quelle
Aus dem Quellcode geht hervor, dass die Abfrage pg_stat_database die Anzahl der Verbindungen zur aktuellen Datenbank für alle Benutzer angibt. Andererseits gibt die Abfrage pg_stat_activity die Anzahl der Verbindungen zur aktuellen Datenbank nur für den abfragenden Benutzer an.
quelle