我有一个批量查询,我每天都在我的数据库上运行。然而,它似乎陷入了空闲状态,我在调试正在进行的工作时遇到了很多困难。
查询是同时插入的表上的聚合,我猜这与某个问题有关。 (聚合是前几天的数据,因此插入不应影响结果。)
线索
我使用sqlalchemy在python脚本中运行它。但是,我已将事务级别设置为自动提交,因此我不认为事情会被包含在事务中。另一方面,当我在sql终端中手动运行查询时,我看不到查询挂起。
通过查询pg_stat_activity
,查询最初以state =' active'进入数据库。大约15秒后,状态变为“空闲”状态。此外,xact_start设置为NULL。等待标志永远不会设置为真。
在我找出sqlalchemy的事务级别自动提交之前,它会挂起状态在事务中空闲'而不是“闲置”。自从做出改变后,它可能会稍微不那么频繁地挂起来?
我觉得我没有能力挖掘比我更深的东西。任何反馈,甚至更多地解释不同的州和相关的postgres内部结构,而不给出明确的答案,将不胜感激。