我有几个长期运行的查询。我想要某种方法来估计查询完成之前需要多长时间,或者如果失败的话,需要一种方法来知道查询处于哪个步骤(而不仅仅是“解析”、“计划”等。我正在寻找执行统计数据)。
我知道我可以通过查看来检查查询是否正在运行pg_stat_activity
。
SELECT * FROM pg_stat_activity WHERE query ILIKE '%table_name%';
但我真正感兴趣的是我能得到这样的东西:
Query status
------------------------------------------------------------------------------------
Append (cost=3.42..181109110.07 rows=294666 width=1113)
-> Nested Loop Semi Join (cost=3.42..63225432.03 rows=160738 width=1057)
-> Nested Loop Left Join (cost=3.15..20470831.91 rows=160738 width=476)
Join Filter: ((tbl.foo_code)::text = (other_tbl.foo_code)::text)
^^^^^ right now it is here
-> Merge Join (cost=2.72..19913290.23 rows=160738 width=452)
Merge Cond: ((tbl.barnaby)::text = (support_tbl.barnaby)::text)
如果我能得到正在运行的查询的解释,那就太好了。