您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關postgresql數據庫中出現鎖表如何解決,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
查詢是否鎖表了
select oid from pg_class where relname='可能鎖表了的表'
select pid from pg_locks where relation='上面查出的oid'
如果查詢到了結果,表示該表被鎖 則需要釋放鎖定
select pg_cancel_backend(上面查到的pid)
補充:PostgreSQL 解決鎖表、死鎖問題
1.-- 查詢ACTIVITY的狀態等信息
SELECT T .PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT, T.QUERY_START FROM PG_STAT_ACTIVITY T WHERE T.DATNAME = '數據庫用戶名';
上面查詢結果中:pid就是ACTIVITY的唯一標識,state就是活動狀態,query就是正在執行的sql語句,query——start就是開始執行的時間。
2.-- 查詢死鎖的ACTIVITY
SELECT T .PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT, T.QUERY_START FROM PG_STAT_ACTIVITY T WHERE T.DATNAME = '數據庫用戶名' AND T.WAIT_EVENT_TYPE = 'Lock';
3.將第二條查詢語句的pid字段的數字值記錄下來,執行下面的查詢語句可以解鎖:
-- 通過pid解鎖對應的ACTIVITY
select PG_CANCEL_BACKEND('6984');
上面的查詢語句,執行了pg_cancel_backend()函數,該函數是取消后臺操作,回滾未提交事物的用途。
4.解決idle in transaction
select pg_terminate_backend ('21967')
以上就是postgresql數據庫中出現鎖表如何解決,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。