f Postgresql 9.6 的lock 源頭好找多了 ~ 迪貝之家

Pages

Postgresql 9.6 的lock 源頭好找多了

postgresql 9.6 開始多了個有趣的系統函式pg_blocking_pids,以後要砍lock session,可方便多了,不用再去執行一長串的sql 語句,真是一大福音,非常大的進步,我們來做個小測試吧!!

我們來執行一段叫ttt.sql,內容如下
pg_blocking_pids

因為跑了pg_sleep,所以transaction open 直到兩分鐘後才會commit,因此你會看到session 暫時pending
pg_blocking_pids


我們再叫起一個psql 的連線來下update 指令,你會看到它也pending,因為被前一個session給卡住了
pg_blocking_pids


接下我們找上面兩個session的process id 吧~~
pg_blocking_pids












紅色框框是該系統函式執行結果,藍色框框是兩個session的資訊,PID 4134 被8120給卡住了