Postgresql死鎖處理


今天遇到Postgresql的一個問題,部分表記錄的update一直無效報錯,初步判斷為鎖表,趕緊進行解決。

1. 查詢死鎖進程列表

select * from pg_stat_activity where waiting='t'

發現有好幾條掛起的記錄,記錄下所有或需要解鎖的pid

2. 解決死鎖進程

select pg_cancel_backend('pid值')

解決完后,刷新后測試,恢復正常。

 

注:如果pg_stat_activity沒有記錄,可以查詢pg_locks這個表中是否有鎖定的記錄

可以使用pg_cancle_backend()或者pg_terminate_backend()結束鎖定的進程。

 

附查找鎖表的方法:

--查詢是否鎖表了
select oid from pg_class where relname='可能鎖表了的表'
select pid from pg_locks where relation='上面查出的oid'
--如果查詢到了結果,表示該表被鎖 則需要釋放鎖定
select pg_cancel_backend(上面查到的pid)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM