【发布时间】:2017-03-08 04:52:31
【问题描述】:
执行简单的 alter table add column 挂起,这可能是由于我的应用程序使用连接池打开连接并可能锁定表。有什么方法可以在应用程序仍在运行时在 postgres 中执行 alter table 命令?
【问题讨论】:
标签: sql database postgresql connection-pooling ddl
执行简单的 alter table add column 挂起,这可能是由于我的应用程序使用连接池打开连接并可能锁定表。有什么方法可以在应用程序仍在运行时在 postgres 中执行 alter table 命令?
【问题讨论】:
标签: sql database postgresql connection-pooling ddl
检查视图pg_locks 以查看哪个并发事务持有锁定ALTER TABLE 的块。
如果您的连接池保持连接挂起在“事务中的空闲”状态(检查pg_stat_activity),则连接池或应用程序中存在错误。你应该解决这个问题,因为它也会导致其他问题,比如表膨胀,因为VACUUM 无法完成它的工作。
Postgres Wiki 中提供了一组用于监控锁的语句:
【讨论】: