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

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


哦,我刚刚在PostgreSQL论坛上发现了这个命令:

SELECT * FROM pg_stat_activity;

下面将给出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';

你可以使用'idle'而不是active来获取已经执行的连接/查询。


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

由于pg_stat_activity包含具有任何状态(空闲或活动)的所有数据库的连接统计信息,因此应该在查询中包含数据库名称和连接状态,以获得所需的输出。


您可以使用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';

如果您想使用PgAdmin(对我来说,它不仅仅是方便),您可以执行这些简单的步骤。如果有帮助,我很高兴

SELECT * FROM pg_stat_activity;