2014-02-26 38 views
0

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

是否有办法让Y用户具有特权,以便来自Y用户的查询将 1)停止X用户的查询。 2)完成Y用户的查询 3)重新启动X用户的查询

回答

2

不,没有。 PostgreSQL目前不支持在锁定请求中放弃冲突的事务,尽管它会是一件很好的事情。你可以有一个周期性的任务查询pg_stat_activitypg_locks寻找等待在AccessExclusiveLockpg_terminate_backend任何冲突的工作人员的查询,但它有点严重。

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