基于postgresql數(shù)據(jù)庫鎖表問題的解決
查詢是否鎖表了
select oid from pg_class where relname='可能鎖表了的表' select pid from pg_locks where relation='上面查出的oid'
如果查詢到了結(jié)果,表示該表被鎖 則需要釋放鎖定
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 = '數(shù)據(jù)庫用戶名';
上面查詢結(jié)果中: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 = '數(shù)據(jù)庫用戶名' AND T.WAIT_EVENT_TYPE = 'Lock';
3.將第二條查詢語句的pid字段的數(shù)字值記錄下來,執(zhí)行下面的查詢語句可以解鎖:
-- 通過pid解鎖對應的ACTIVITY
select PG_CANCEL_BACKEND('6984');
上面的查詢語句,執(zhí)行了pg_cancel_backend()函數(shù),該函數(shù)是取消后臺操作,回滾未提交事物的用途。
4.解決idle in transaction
select pg_terminate_backend ('21967')
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
PostgreSQL教程(一):數(shù)據(jù)表詳解
這篇文章主要介紹了PostgreSQL教程(一):數(shù)據(jù)表詳解表的定義、系統(tǒng)字段、表的修改、表的權(quán)限等4大部份內(nèi)容,內(nèi)容種包括表的創(chuàng)建、刪除、修改、字段的修改、刪除、主鍵和外鍵、約束添加修改刪除等,本文講解了,需要的朋友可以參考下2015-05-05pgsql之pg_stat_replication的使用詳解
這篇文章主要介紹了pgsql之pg_stat_replication的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Centos環(huán)境下Postgresql 安裝配置及環(huán)境變量配置技巧
本文給大家分享在Centos環(huán)境下Postgresql 安裝配置及環(huán)境變量配置技巧,給大家?guī)砹嗽敿毜陌惭b步驟,對Postgresql 安裝配置相關(guān)知識感興趣的朋友跟隨小編一起學習吧2021-05-05PostgreSQL 對IN,EXISTS,ANY/ALL,JOIN的sql優(yōu)化方案
這篇文章主要介紹了PostgreSQL 對IN,EXISTS,ANY/ALL,JOIN的sql優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSQL物理備份恢復之 pg_rman的用法說明
這篇文章主要介紹了PostgreSQL物理備份恢復之 pg_rman的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02