Trasis Inc.

渋谷拠点のシステム開発会社

PostgreSQLで現在ロック中のプロセスの確認とkill

概要

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);