pg_stat_activityビューを使ってPostgreSQLのアクティブな接続を一覧表示する方法
PostgreSQLでアクティブな接続を一覧表示する方法
pg_stat_activity
ビューは、PostgreSQLデータベース内のすべてのアクティブな接続に関する情報を提供します。このビューを使用するには、以下のコマンドを実行します。
SELECT * FROM pg_stat_activity;
このコマンドは、以下の情報を含むテーブルを出力します。
- pid: クライアントのプロセスID
- datname: 接続されているデータベースの名前
- application_name: 接続しているアプリケーションの名前
- client_addr: クライアントのIPアドレス
- backend_start: 接続開始時刻
- state: 接続の状態(実行中、アイドルなど)
- query: 実行中のクエリ(存在する場合)
特定の条件に一致する接続のみを表示したい場合は、WHERE句を使用できます。例えば、以下のコマンドは、データベース mydb
に接続しているすべての接続を表示します。
SELECT * FROM pg_stat_activity WHERE datname = 'mydb';
psql
コマンドを使用して、アクティブな接続を一覧表示することもできます。以下のコマンドを実行します。
psql -c "SELECT * FROM pg_stat_activity;"
このコマンドは、pg_stat_activity
ビューと同じ情報を表示します。
pgAdmin ツールを使用する
pgAdmin は、PostgreSQLデータベースを管理するためのグラフィカルツールです。pgAdmin を使用して、アクティブな接続を一覧表示するには、以下の手順を実行します。
- pgAdmin を起動し、接続したいデータベースに接続します。
- ツリービューで、Servers > Databases > <database name> > Sessions を展開します。
- Sessions ノードを右クリックし、View Active Sessions を選択します。
これにより、アクティブな接続のリストが表示されます。
その他のツール
上記以外にも、PostgreSQLのアクティブな接続を一覧表示できるツールはいくつかあります。例えば、以下のようなツールがあります。
- pgBadger
- pg_activity
- pgtop
これらのツールは、pg_stat_activity
ビューよりも詳細な情報を提供する場合があります。
注意事項
pg_stat_activity
ビューは、PostgreSQL 8.0以降でのみ使用できます。psql
コマンドを使用するには、PostgreSQLサーバーへのアクセス権が必要です。- pgAdmin を使用するには、pgAdmin がインストールされている必要があります。
PostgreSQLでアクティブな接続を一覧表示するには、いくつかの方法があります。どの方法を使用するかは、ニーズと環境によって異なります。
SELECT * FROM pg_stat_activity;
psql コマンドを使用する
psql -c "SELECT * FROM pg_stat_activity;"
これらのツールは、それぞれ独自の使用方法があります。詳細は、各ツールのドキュメントを参照してください。
PostgreSQLでアクティブな接続を一覧表示するその他の方法
システムテーブルを使用する
PostgreSQLには、アクティブな接続に関する情報を格納するいくつかのシステムテーブルがあります。これらのテーブルを使用して、アクティブな接続を一覧表示することができます。
- pg_stat_activity: すべてのアクティブな接続に関する情報を提供します。
- pg_locks: 現在のロックに関する情報を提供します。
これらのテーブルは、SELECT
ステートメントを使用してクエリできます。例えば、以下のコマンドは、pg_stat_activity
テーブルを使用して、データベース mydb
に接続しているすべての接続を表示します。
SELECT * FROM pg_stat_activity WHERE datname = 'mydb';
拡張機能を使用する
- pg_activitystream: 接続に関する情報をストリーミング形式で提供します。
- pg_stat_statements: 実行されたステートメントに関する情報を提供します。
これらの拡張機能は、CREATE EXTENSION
ステートメントを使用してインストールできます。詳細は、各拡張機能のドキュメントを参照してください。
オペレーティングシステムツールを使用して、PostgreSQLサーバープロセスに接続しているすべての接続を一覧表示することもできます。例えば、以下のコマンドは、Linuxで実行して、PostgreSQLサーバープロセスに接続しているすべての接続を表示します。
netstat -anp | grep postgres
注意事項
- 拡張機能を使用するには、拡張機能をインストールする権限が必要です。
- オペレーティングシステムツールを使用するには、オペレーティングシステムへのアクセス権が必要です。
sql postgresql database-connection