我使用R
将PostgreSQL
到caroline::dbWriteTable2
(9.5)的大数据框(2000万行)附加到f
。我可以看到此操作已创建一个活动查询,等待标志select *
from pg_stat_activity
where datname = 'dbname'
使用:
(defmacro magic []
(slurp *file*))
查询已经运行了很长时间(超过一个小时),我想知道是否已经停止。在我的Windows 7资源监视器中,我可以看到PostgreSQL服务器进程正在使用CPU,但它没有列在磁盘活动中。
我还可以做些什么来检查查询是否由于某种原因而停滞不前?
答案 0 :(得分:1)
基本上,如果后端使用CPU时间,则不会停滞。 SQL查询可以运行很长时间。
没有一种方法可以确定正在运行的PostgreSQL后端正在做什么;您可以在Linux上使用类似strace
的内容来监视已发出的系统调用,或使用gdb
来获取堆栈跟踪。如果您了解PostgreSQL源代码的方式,并且知道了活动查询的计划,那么您可以猜测它正在做什么。
我的建议是查看查询计划(EXAMINE
)并查看是否存在一些昂贵的操作(成本高)。这可能会导致执行时间过长。