基于postgresql數據庫鎖表問題的解決
查詢是否鎖表了
select oid from pg_class where relname='可能鎖表了的表' select pid from pg_locks where relation='上面查出的oid'
如果查詢到了結果,表示該表被鎖 則需要釋放鎖定
select pg_cancel_backend(上面查到的pid)
補充:PostgreSQL 解決鎖表、死鎖問題
1.-- 查詢ACTIVITY的狀態(tài)等信息
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就是活動狀態(tài),query就是正在執(zhí)行的sql語句,query——start就是開始執(zhí)行的時間。
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字段的數字值記錄下來,執(zhí)行下面的查詢語句可以解鎖:
-- 通過pid解鎖對應的ACTIVITY
select PG_CANCEL_BACKEND('6984');
上面的查詢語句,執(zhí)行了pg_cancel_backend()函數,該函數是取消后臺操作,回滾未提交事物的用途。
4.解決idle in transaction
select pg_terminate_backend ('21967')
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Postgresql數據庫character?varying和character的區(qū)別說明
這篇文章主要介紹了Postgresql數據庫character?varying和character的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07CentOS 7下安裝PostgreSQL 9.6的教程分享
PostgreSQL在我心目中的地位要遠遠高于MySQL,雖然流行對比MySQL低很對,但是功能性一致走在MySQL的前面。下面這篇文章主要介紹了CentOS 7下安裝PostgreSQL數據庫的方法,需要的朋友可以參考借鑒,一起來看看吧。2017-02-02postgresql 中的加密擴展插件pgcrypto用法說明
這篇文章主要介紹了postgresql 中的加密擴展插件pgcrypto用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01