【问题标题】:How do I know whether an active PostgreSQL query is still "working"?我如何知道活动的 PostgreSQL 查询是否仍在“工作”?
【发布时间】:2023-03-20 06:01:01
【问题描述】:

我正在使用 caroline::dbWriteTable2 将一个大型数据框(2000 万行)从 R 附加到 PostgreSQL (9.5)。我可以看到这个操作创建了一个活动查询,等待标志 f 使用:

select *
from pg_stat_activity
where datname = 'dbname'

查询已经运行了很长时间(一个多小时),我想知道是否被停止。在我的 Windows 7 资源监视器中,我可以看到 PostgreSQL 服务器进程正在使用 CPU,但它没有在磁盘活动中列出。

我还能做些什么来检查查询是否因任何原因而停止?

【问题讨论】:

    标签: r postgresql postgresql-9.5


    【解决方案1】:

    基本上,如果后端正在使用 CPU 时间,它不会停止。 SQL 查询可以运行很长时间。

    没有一种方便的方法来确定一个工作的 PostgreSQL 后端当前正在做什么;您可以在 Linux 上使用 strace 之类的东西来监视发出的系统调用,或者使用 gdb 来获取堆栈跟踪。如果您了解 PostgreSQL 源代码,并且知道活动查询的计划,那么您就可以猜测它在做什么。

    我的建议是看一下查询计划(EXAMINE),看看是否有一些昂贵的操作(高成本)。这可能会导致执行时间过长。

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      相关资源
      最近更新 更多