Anzahl Verbundener Slots abfragen?

Morgen,

lese mich gerade durch die Dokumentation zum autovaccum daemon. Da heißt es:

Also, it’s important to allow a slot for the autovacuum process when choosing the value of superuser_reserved_connections.

Für den Start des autovacuum daemon muss sichergestellt sein, das eine freie superuser-Verbindung (Slot) zur Verfügung steht. Die Anzahl freigehaltener (reservierter) Slots für superuser-Verbindungen kann in superuser_reserved_connections festgelegt werden.
(Hoffe das ist so erstmal Richtig.)

Wie finde ich nun heraus, ob noch mindestens eine freie Verbindung verfügbar ist? Auch wenn es eher aus Interesse als eine Notwendigkeit ist.
Den Wert welcher Variable/Zelle müsste ich von max_connections subtrahieren?

Danke tiptop

Die Anzahl der aktuell offenen Verbindungen bekommst Du via pg_stat_activity, inclusive der User. Ob die User Superuser sind, kannst Du in pg_user prüfen.

Reicht das als Wink?

Andreas

Na besser geht es ja garnicht. :slight_smile:

Ich poste mal noch was ich daraus gemacht habe.

– Details der verbundenen users
SELECT * FROM pg_catalog.pg_user
WHERE usesysid IN (SELECT usesysid FROM pg_catalog.pg_stat_activity);
SHOW max_connections; – maximal erlaubte Verbindungen

Das liefert Dir aber NICHT die Anzahl der freien Superuser-Verbindungen, da brauchst Du schon eher

SELECT count(*) FROM pg_catalog.pg_user u right join pg_catalog.pg_stat_activity a on (u.usesysid=a.usesysid) where u.usesuper;

oder vielleicht

SELECT count(case when u.usesuper then 1 else 0 end) as super, count(case when u.usesuper then 0 else 1 end) as normal FROM pg_catalog.pg_user u right join pg_catalog.pg_stat_activity a on (u.usesysid=a.usesysid) ;

Andreas