PostgreSQL中小表上的ALTER查询非常缓慢

6
我有一个 PostgreSQL 9.2 数据库,里面只有一点点种子数据,是我正在开发的网站所需的。
以下查询似乎会永远运行:
ALTER TABLE diagnose_bodypart ADD description text NOT NULL;

“diagnose_bodypart”是一个不到10行的表格。我已经让查询运行了一分钟以上,但没有结果。可能出现了什么问题?有没有关于如何调试的建议?

6
听起来像是某种锁。您是否有打开的任何连接可以访问(或已经访问)该表而没有提交? - user330315
请查看pg_locks视图。 - Craig Ringer
你说得对!有一些锁。我进一步研究了一下,并摆脱了它们。不过,即使没有进一步的查询,人们也可以通过关闭数据库连接来释放锁定。Craig Ringer:感谢您提供pg_locks提示。 - Dmitry Minkovsky
1个回答

6

添加列不需要重新编写表格(除非您指定了DEFAULT)。如果没有任何锁定,这是一个快速操作。如Craig所指出的那样,pg_locks是检查的地方。

一般来说,最可能的原因是长时间运行的事务。我将查看哪些工作流程正在访问这些表格以及事务开放的时间有多长。这种类型的锁通常是事务性的,因此提交事务通常会解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接