我们在每晚凌晨 2 点的负载中有一个更新,它有两次将 CPU 固定在 100% 并且在几个小时后从未完成。我强烈怀疑这是因为统计数据不准确导致连接中出现嵌套循环。我无法在具有相同硬件规格和 postgres 配置的较低环境中重现它。
我需要证明嵌套循环正在发生,然后才能放入 RFC 来解决问题(例如调整分析和自动真空设置)。我已经设置了 auto_explain 但这似乎只捕获了实际完成的查询的计划。如何为未完成的查询记录计划?
在 SQL Server 中,我可以通过使用 @get_plans=1 运行 sp_whoisactive 来做到这一点。我正在 Postgres 中寻找类似的东西。到目前为止,我唯一的想法是使用 cron 运行 EXPLAINs,但这似乎非常复杂。