How to check Postgres DB lock problems
当我们遇到Postgres DB lock的时候,我们想知道是那些表被lock住了,用以下的SQL可以得到我们想要的信息。
pg_locks View
Looking at pg_locks shows you what locks are granted and what processes are waiting for locks to be acquired. A good query to start looking for lock problems.
SELECT relation::regclass, * FROM pg_locks WHERE NOT GRANTED;
pg_stat_activity view
Figuring out what the processes holding or waiting for locks is easier if you cross-reference against the information in pg_sta_activity.
SELECT blocked_locks.pid AS blocked_pid,
blocked_activity.usename AS blocked_user,
blocking_locks.pid AS blocking_pid,
blocking_activity.usename AS blocking_user,
bl