postgresql解決鎖表

2021-10-03 11:57:50 字數 666 閱讀 7776

--查詢是否鎖表了

select oid from pg_class where relname='可能鎖表了的表'

select pid from pg_locks where relation='上面查出的oid'

--如果查詢到了結果,表示該錶被鎖 則需要釋放鎖定

select pg_cancel_backend(上面查到的pid)

1.檢視資料庫的程序。select * from pg_stat_activity where datname='死鎖的資料庫id ';

檢索出來的字段中,【wating 】字段,資料為t的那條,就是死鎖的程序,找到對應的【procpid 】列的值。

例如:select  procpid  from pg_stat_activity where datname='資料庫id' and waiting ='t';

2.殺掉程序。

kill有兩種方式,第一種是:

select pg_cancel_backend(pid);

這種方式只能kill select查詢,對update、delete 及dml不生效)

第二種是:

select pg_terminate_backend(pid);

這種可以kill掉各種操作(select、update、delete、drop等)操作

改進PostgreSQL鎖機制

如果你想構建乙個大規模的 單憑橫向擴充套件web伺服器是遠遠不夠的。如何巧妙地管理資料庫也是非常必要的。在postgresql中,借助於併發性的改進,通過減少鎖及加速執行得到若干令人滿意的特性。如果你想構建乙個大規模的 單憑橫向擴充套件web伺服器是遠遠不夠的。如何巧妙地管理資料庫也是非常必要的。鎖...

測試postgreSQL中表鎖

檢視視窗連線到的服務程序的pid。select pg backend pid 三個視窗的pid分別如下 select locktype,relation regclass,virtualxid,transactionid,virtualtransaction pid,mode,granted fro...

plsql表鎖被占用 解決Oracle鎖表

概述 鎖表是很容易發生的現象,當有多人對錶進行操作時就容易發生。如下是解決鎖表的步驟 鎖表原因 由於oracle資料庫具有保持資料的一致性,所以當乙個人對錶進行操作,沒有提交,另乙個人在需要操作的時候,就不能操作,必須等表提交,就一直處於等待狀態,就導致鎖表。鎖表報錯資訊 如果發現修改乙個表資料時不...