我正在调查数据库连接无限期打开的问题,这会导致数据库服务器出现问题。如何查看到PostgreSQL服务器的当前打开的连接,特别是那些使用特定数据库的连接?理想情况下,我还要查看正在执行什么命令。基本上,我正在寻找与MSSQL中的“当前活动”视图相同的东西。

评论

从PostgreSQL 9.0开始,您甚至会看到引起问题的应用程序的名称。也许这对以后的检查很有帮助。

#1 楼

好的,是从别人那里得到的。此查询应能解决问题:

select *
from pg_stat_activity
where datname = 'mydatabasename';


#2 楼

另请参阅pg-top,除了显示postgres活动外,它的作用与top相同。 postgres用户(例如sudo su postgres
运行pg_top



评论


很难找到Windows可执行文件。您(几乎)永远不会在Windows服务器上拥有完整的GCC套件或Mingw(这不是我的选择,不要怪我)。

–寡核苷酸
19年5月22日在15:29

@oligofren在Windows上运行Postgresql有点冒险,如果没有其他原因,那么那么多的实用程序和工具都是为Linux编写的。

–韦恩·康拉德
19年5月22日在15:45

在破坏者方面,debian软件包称为pgtop

– phihag
20 Mar 7 '20 at 12:28

#3 楼

从本文引用。

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query  
FROM pg_stat_activity
WHERE state <> 'idle'
AND pid<>pg_backend_pid();


评论


query和pid分别命名为current_query和procpid,并且在PostgreSQL 9.2之前的pg_stat_activity中状态不可用。

–所有工人都是必不可少的
16年5月3日,下午3:27

#4 楼

在Ubuntu 18.04中进行监视的两种方法仅供参考

一种使用pg_top

$ sudo apt-get install ptop
$ pg_top # similar to top as others mentioned


两种使用pgAdmin4的方法: />
$ sudo apt-get install pgadmin4 pgadmin4-apache2
# type in password and use default url
$ pgadmin4


在仪表板上,将总计/活动作为



#5 楼

PostgreSQL ASH Viewer(PASH Viewer)提供活动会话历史记录数据的图形视图。
https://github.com/dbacvetkov/PASH-Viewer
它是免费和开源的。
ScreenShot

#6 楼

DBeaver还非常好地显示了活动/空闲/总服务器会话。