Postgres更改表时与连接池挂起

4

执行简单的alter table add column命令时出现了卡顿,这可能是由于我的应用程序使用连接池打开连接并锁定表。在应用程序仍在运行的情况下,是否有任何方法可以执行postgres中的alter table命令?

1个回答

8
请检查视图pg_locks,以查看哪个并发事务持有阻止ALTER TABLE的锁。
如果您的连接池使连接保持在“事务中处于空闲状态”(请检查pg_stat_activity)中挂起,则连接池或应用程序存在错误。您应该修复它,因为它还会导致其他问题,例如表膨胀,因为VACUUM无法完成其工作。
在Postgres Wiki中提供了一组监控锁的语句:

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