0

DB(PostgreSQL 9.3)中有2个用户。1) X 用户做了很多 SELECT/INSERT 查询。2)Y用户做一个需要“ACCESS EXCLUSIVE”锁的查询。

有没有办法授予 Y 用户特权,以便 Y 用户的查询将 1)停止 X 用户的查询。2) 完成 Y 用户的查询 3) 重新启动 X 用户的查询

4

1 回答 1

2

不,没有。PostgreSQL 目前不支持在锁定请求上中止冲突事务,尽管它是一个不错的选择。您可以进行定期任务查询pg_stat_activitypg_locks查找等待AccessExclusiveLockpg_terminate_backend任何冲突工作人员的查询,但这有点笨拙。

PostgreSQL 也不能重新运行中止的查询,应用程序应该自己做。考虑查询可能是事务中的第四个;Pg 只重新运行事务中的最后一个查询是完全错误的。它必须中止整个事务。它甚至不知道重新运行它是否正确。所以应用程序必须注意这一点。

于 2014-02-26T09:30:26.143 回答