如何在PostgreSQL数据库中获取正在运行的查询状态

71

我有一个运行时间非常长的查询语句。 如何获取该查询的状态,例如它将运行多长时间? 它是否正在访问表中的数据。

注意:根据pg_stat_activity,查询状态显示为活动而不是等待状态。像在Oracle中一样,我们可以看到查询的源/目标和处理状态 - 在postgresql中是否有类似的功能?


我需要在上述问题中查询的完成时间。pg_stat_activity视图仅提供活动查询、数据库和用户详细信息。pg_stat_activity不包含正在运行的查询的完成时间。 - Arun Padule
3个回答

66

根据@Anshu的答案,我正在使用:

SELECT datname, pid, state, query, age(clock_timestamp(), query_start) AS age 
FROM pg_stat_activity
WHERE state <> 'idle' 
    AND query NOT LIKE '% FROM pg_stat_activity %' 
ORDER BY age;

1
AND <> '空闲事务中' 也可能是感兴趣的。 - Ciro Santilli OurBigBook.com

10
我们可以在PostgreSQL中找到与数据库相关的查询日志。
select *
from pg_stat_activity
where datname = 'yourdatabasename'

这将提供数据库的活动查询日志。


9

目前还无法完成此操作,但正在TODO清单中列出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接