如何选择PostgreSQL数据库的活动连接列表

Tre*_*reg 112 sql postgresql database-connection listings

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

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

Tre*_*reg 198

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

SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

  • 如果您想将其限制为只有一个数据库,可以使用_SELECT*FROM pg_stat_activity WHERE datname ='dbname'; _ (11认同)
  • 如何从特定的支持服务获取活动数据库连接? (2认同)
  • 运行“pg_terminate_backend”后,我的应用程序仍然能够对数据库运行查询,但我在 pg_Stat_activity 中看不到新连接,怎么样? (2认同)
  • 如果你想让输出更容易阅读,请先运行 ``\x on;`` 。 (2认同)

Abd*_*lah 26

SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';
Run Code Online (Sandbox Code Playgroud)

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


Nee*_*sal 24

以下将为您提供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'
Run Code Online (Sandbox Code Playgroud)

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

  • 空闲是否意味着连接处于活动状态?如果我释放连接,它仍然会被列为空闲吗? (2认同)
  • 是的@ShivamKubde,但作为“空闲”,并且上面的查询仅显示“活动”连接,因此删除“WHERE ...”子句,并能够查看哪些连接是活动的或空闲的,将“state”列添加到`SELECT` 子句 (2认同)

小智 15

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

SELECT * FROM pg_stat_activity WHERE state = 'active';
Run Code Online (Sandbox Code Playgroud)
select * from pg_stat_activity where state = 'active' and datname = 'REPLACE_DB_NAME_HERE';


Igo*_* S. 13

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

SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

例子