Comment lister les connexions actives sur PostgreSQL?

151

Existe-t-il une commande dans PostgreSQL pour sélectionner les connexions actives à une base de données donnée?

psqldéclare que je ne peux pas supprimer l'une de mes bases de données car il y a des connexions actives , donc j'aimerais voir quelles sont les connexions (et à partir de quelles machines)

Tregoreg
la source
Génial! Je cherche (mal) et je n'ai rien trouvé. Puis-je faire quelque chose pour fermer d'autres connexions inactives?
Conférencier

Réponses:

264

Oh, je viens de trouver cette commande sur le forum PostgreSQL:

SELECT * FROM pg_stat_activity;
Tregoreg
la source
14
Si vous souhaitez le limiter à une seule base de données, vous pouvez utiliser SELECT * FROM pg_stat_activity WHERE datname = 'dbname';
user2182349
1
Comment puis-je obtenir la connexion à la base de données active à partir du service sauvegardé spécifique?
GunasekaranR
Et que diriez-vous après l'exécution pg_terminate_backendet mon application est toujours capable d'exécuter une requête sur la base de données, mais je n'ai pas pu voir les nouvelles connexions dans pg_Stat_activity?
takacsot
38

Ce qui suit vous donnera les connexions / requêtes actives dans la base de données postgres-

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query
    ,state
FROM pg_stat_activity
WHERE state = 'active';

Vous pouvez utiliser «idle» au lieu d'actif pour obtenir des connexions / requêtes déjà exécutées.

Neeraj Bansal
la source
1
Inactif signifie-t-il que la connexion est active?. Si je libère la connexion, sera-t-elle toujours répertoriée comme inactive?
Shivam Kubde
1
Oui @ShivamKubde mais comme `` inactif '', et la requête ci-dessus n'affiche que les connexions `` actives '', supprimez donc la WHERE ...clause et pour pouvoir voir quelles connexions sont actives ou inactives, ajoutez la colonne stateà la SELECTclause
Mariano Ruiz
6
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

Puisque pg_stat_activity contient des statistiques de connexion de toutes les bases de données ayant un Etat, que ce soit idleou active, le nom de base de données et de l' état de connexion doivent être inclus dans la requête pour obtenir la sortie désirée.

Abdollah
la source