276

PostgreSQL 中是否有命令选择到给定数据库的活动连接?

psql声明我不能删除我的一个数据库,因为它有活动连接,所以我想看看连接是什么(以及来自哪些机器)

4

4 回答 4

481

哦,我刚刚在 PostgreSQL 论坛上找到了该命令:

SELECT * FROM pg_stat_activity;
于 2014-12-12T02:23:14.193 回答
65

以下将为您提供 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';

您可以使用“空闲”而不是活动来获取已执行的连接/查询。

于 2018-02-02T05:38:20.403 回答
32
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

由于pg_stat_activity包含具有任何状态的所有数据库的连接统计信息,idle因此active应将数据库名称和连接状态包含在查询中以获得所需的输出。

于 2020-02-25T13:31:25.117 回答
3

您可以使用 pg_stat_activity 在 Postgres 中检查连接详细信息。您可以应用过滤器来满足您的条件。以下是查询。参考资料:https ://orahow.com/check-active-connections-in-postgresql/

SELECT * FROM pg_stat_activity WHERE state = 'active';
select * from pg_stat_activity where state = 'active' and datname = 'REPLACE_DB_NAME_HERE';
于 2021-11-10T08:35:54.903 回答