PostgreSQLのアクティブな接続をリストする方法は?


150

PostgreSQLには、特定のデータベースへのアクティブな接続を選択するコマンドがありますか?

psqlデータベースへのアクティブな接続があるため、データベースの1つをドロップできないと記載されているため、接続(およびどのマシンから)かを確認したい



すごい!私は(ひどく)検索し、何も見つかりません。他のアイドル接続を閉じるために何かできますか?
スピーカー

回答:


262

ああ、私はPostgreSQLフォーラムでそのコマンドを見つけました:

SELECT * FROM pg_stat_activity;

14
これを1つのデータベースのみに制限する場合は、SELECT * FROM pg_stat_activity WHERE datname = 'dbname';を
user2182349

1
特定のバックアップサービスからアクティブなデータベース接続を取得するにはどうすればよいですか?
GunasekaranR 2018

実行後pg_terminate_backend、アプリはまだデータベースに対してクエリを実行できますが、pg_Stat_activityに新しい接続が表示されませんでしたか?
takacsot

37

以下は、postgres DB-でアクティブな接続/クエリを提供します

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

実行済みの接続/クエリを取得するには、アクティブではなく「アイドル」を使用できます。


1
アイドルは接続がアクティブであることを意味しますか?接続を解放しても、アイドル状態として表示されますか?
Shivam Kubde

1
はい@ShivamKubdeですが、「アイドル」であり、上記のクエリは「アクティブ」な接続のみを表示するため、WHERE ...句を削除し、どの接続がアクティブまたはアイドルであるかを確認できるようにするには、列stateSELECT句を追加します
マリアーノルイス

6
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

以来は、pg_stat_activityどのような状態を持つすべてのデータベースの接続統計情報が含まれている、のいずれかidleまたはactiveデータベース名と接続状態は、所望の出力を得るために、クエリに含まれるべきです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.