概要
PostgreSQLの各プロセスがどのテーブルでどの種類のロックを行っているか調べる方法について説明。さらに、そのプロセスを下記手順で終了することで、ロックしていた処理を強制的に中断できる。
手順
プロセスIDの確認
コマンドラインなどで、次のSQLを実行する。
SELECT l.pid, db.datname, c.relname, l.locktype, l.mode
FROM pg_locks l
LEFT JOIN pg_class c ON l.relation=c.relfilenode
LEFT JOIN pg_database db ON l.database = db.oid
ORDER BY l.pid;
pid がプロセスIDを意味する。
プロセスの停止
プロセスIDが分かったら、次のSQLでプロセスを停止できる。SELECT pg_cancel_backend(プロセスID);