測試postgreSQL中表鎖

2021-08-29 22:40:40 字數 1663 閱讀 5792

檢視視窗連線到的服務程序的pid。

select pg_backend_pid();
三個視窗的pid分別如下:

select locktype,relation::regclass, virtualxid, transactionid, virtualtransaction ,pid, mode, granted from pg_locks where pid=28934;
查詢結果如下:

其中,各列的含義如下:

列名含義

locktype

被鎖定物件的型別

relation

表。如果物件不是表或表的一部分,則此值為null。

virtualxid

虛擬事務id。如果物件虛擬事務,則此值為null。

transactionid

事務id。如果物件不是事務,則此值為mull。

virtualtransaction

持有或等待這把鎖的虛擬事務的id。

pid持有或等待這把鎖的服務程序pid。

mode

鎖的模式名稱。

granted

鎖已被持有,則為ture;如果等待獲得此鎖,此值為false。

查詢結果的第一行表示:事務在自己的「virtualxid」上加「exclusivelock」鎖。

第二行表示:在表person上加鎖「acces***clusivelock」。

執行鎖表命令後,並沒有進行實際的修改操作,此時transactionid為null,這表明:事務id在實際需要的時候才產生。

由於第乙個視窗已經對person表加鎖,所以第二個視窗的鎖表語句會被阻塞住。

由上圖可知:程序28924,2052都對錶person加了鎖。但程序28924的granted為t,表示它獲得了這個鎖。程序2052的granted為f,表示它沒有獲得這把鎖,從而被阻塞了。

PostgreSQL中表大小 索引大小

需要了解每張表的具體大小,postgresql提供了很多任務具 每個表都有乙個主要的堆磁碟檔案,大多數資料都儲存在其中。如果乙個表有著可能會很寬 尺寸大 的列,則另外還有乙個toast檔案與這個表相關聯,它用於儲存因為太寬而不能儲存在主表裡面的值 如果有這個附屬檔案,那麼toast表上會有乙個可用的...

改進PostgreSQL鎖機制

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

postgresql解決鎖表

查詢是否鎖表了 select oid from pg class where relname 可能鎖表了的表 select pid from pg locks where relation 上面查出的oid 如果查詢到了結果,表示該錶被鎖 則需要釋放鎖定 select pg cancel backe...