如何在PostgreSQL 8.4中查看活动连接和“当前活动”


99

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


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

Answers:


137

好的,是从别人那里得到的。这个查询应该可以解决这个问题:

select *
from pg_stat_activity
where datname = 'mydatabasename';

23

另请参阅pg-top,其作用类似于top,但它显示postgres活动。

  • 安装pg-top(在Debian中,该软件包称为“ ptop”)。
  • 成为postgres用户(例如sudo su postgres
  • pg_top

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

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

13

从本文引用。

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();

querypid分别命名为current_queryprocpid,并且statepg_stat_activityPostgreSQL 9.2之前的版本中不可用。
user369450'5


1

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

在信息中心中,将总计/活动状态检查为

在此处输入图片说明

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.