【发布时间】:2015-02-10 16:53:07
【问题描述】:
PostgreSQL 中有一个命令可以选择到给定数据库的活动连接吗?
psql 声明我无法删除我的一个数据库,因为有到它的活动连接,所以我想看看连接是什么(以及来自哪些机器)
【问题讨论】:
-
太棒了!我搜索(糟糕)并没有找到任何东西。我可以做些什么来关闭其他空闲连接吗?
标签: sql postgresql database-connection listings
PostgreSQL 中有一个命令可以选择到给定数据库的活动连接吗?
psql 声明我无法删除我的一个数据库,因为有到它的活动连接,所以我想看看连接是什么(以及来自哪些机器)
【问题讨论】:
标签: sql postgresql database-connection listings
哦,我刚刚在 PostgreSQL 论坛上找到了这个命令:
SELECT * FROM pg_stat_activity;
【讨论】:
pg_terminate_backend 之后我的应用程序仍然能够对数据库运行查询但我在 pg_Stat_activity 中看不到新连接怎么样?
\x on;。
以下将为您提供 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';
您可以使用“空闲”而不是活动来获取已执行的连接/查询。
【讨论】:
WHERE ... 子句并能够查看哪些连接处于活动状态或空闲状态添加列state 到 SELECT 子句
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';
由于pg_stat_activity 包含所有具有任何状态(idle 或active)的数据库的连接统计信息,因此应在查询中包含数据库名称和连接状态以获得所需的输出。
【讨论】:
您可以使用 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';
【讨论】: