2014-02-26 79 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只是重新運行事務中的最後一個查詢是完全錯誤的。它必須中止整個交易。它不知道重新運行它是否正確。所以應用程序必須照顧這一點。