如何列出PostgreSQL上的活动连接?


150

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

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



大!我搜索(严重),没有找到任何东西。我可以做些什么来关闭别人的空闲连接吗?
演讲者

Answers:


262

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

SELECT * FROM pg_stat_activity;

14
如果只想将其限制为一个数据库,则可以使用SELECT * FROM pg_stat_activity WHERE datname ='dbname';
user2182349

1
如何从特定的支持服务获取活动数据库连接?
GunasekaranR

在运行之后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';

您可以使用“ idle”而不是active来获取已执行的连接/查询。


1
空闲是否意味着连接处于活动状态?如果我释放连接,它还会被列为空闲状态吗?
Shivam Kubde

1
是@ShivamKubde但作为“空闲”,而上面的查询只显示“激活”连接,因此删除WHERE ...条款,并能看到连接是活动或空闲添加列stateSELECT
马里亚诺·鲁伊斯

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

由于pg_stat_activity含有任何状态的所有数据库连接的统计数据,无论是idleactive,数据库名称和连接状态应该被包括在查询以获得所需的输出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.