首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres EXPLAIN从不返回结果

Postgres EXPLAIN从不返回结果
EN

Stack Overflow用户
提问于 2016-06-10 00:10:51
回答 1查看 276关注 0票数 0

我试图弄清楚为什么查询要花这么长时间才能运行。当我在查询上运行EXPLAIN时,它没有返回(在等待5+分钟之后)。查询为

代码语言:javascript
复制
SELECT *
FROM Foo JOIN Bar USING (FileNum, LineNum)

元组(FileNum, LineNum)是这两个表的主键。此外,(FileNum, LineNum)Bar中引用Foo的外键。

我遇到了数据库的性能问题,但这似乎是一个新现象。

我已经在数据库上运行了ANALYZE,从那时起就没有做过任何更改。

有人知道为什么查询规划器不返回结果吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-10 00:28:36

最简单的解释是,另一个会话获取了查询所涉及的某个表上的AccessExclusive锁,并且不会释放它。

例如,如果另一个会话在事务中执行ALTER TABLE但从未提交,就会发生这种情况。

您可以尝试在https://wiki.postgresql.org/wiki/Lock_Monitoring中执行查询,以检查是否有这样的阻塞事务正在进行,然后可能使用pg_cancel_backend()pg_terminate_backend()终止它。

请注意,如果阻塞事务是已准备好的事务:

  • 锁将保留到服务器重新启动。
  • 事务在pg_stat_activity中没有相应的会话,因此任何通过pid联接的查询都将丢失它。

准备好的事务可以通过pg_prepared_xacts查看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37731216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档