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用戶的查詢
DB(PostgreSQL 9.3)中有2個用戶。 1)X用戶做了很多SELECT/INSERT查詢。 2)Y用戶做一個需要「ACCESS EXCLUSIVE」鎖定的查詢。PostgreSQL中的特權查詢9.3
是否有辦法讓Y用戶具有特權,以便來自Y用戶的查詢將 1)停止X用戶的查詢。 2)完成Y用戶的查詢 3)重新啓動X用戶的查詢
不,沒有。 PostgreSQL目前不支持在鎖定請求中放棄衝突的事務,儘管它會是一件很好的事情。你可以有一個週期性的任務查詢pg_stat_activity
和pg_locks
尋找等待在AccessExclusiveLock
和pg_terminate_backend
任何衝突的工作人員的查詢,但它有點嚴重。
PostgreSQL也不能重新運行中止的查詢,應用程序預計會自己做。考慮到查詢可能是交易中的第四個; Pg只是重新運行事務中的最後一個查詢是完全錯誤的。它必須中止整個交易。它不知道重新運行它是否正確。所以應用程序必須照顧這一點。