pt-show-locks

概要

待機中のロックと、その待機の原因となっているロックを、依存関係および実行中のクエリとともに表示します。

実行方法

pt-show-locks [option...]

オプション

-h, --host=HOSTNAME
-p, --port=PORT
-U, --username=USERNAME
-d, --dbname=DBNAME
--help

-h, --host オプションは、接続するPostgreSQLデータベースのサーバ名またはIPアドレスを指定します。オプションが指定されない場合は、PGHOST環境変数に設定された値が使われます。PGHOST環境変数が設定されていない場合には、デフォルトの値として localhost が使われます。

-p, --port オプションは、接続するPostgreSQLデータベースのポート番号を指定します。オプションが指定されない場合は、PGPORT環境変数に設定された値が使われます。PGPORT環境変数が設定されていない場合には、デフォルトの値として 5432 が使われます。

-U, --username オプションは、PostgreSQLデータベースに接続するユーザ名を指定します。オプションが指定されない場合は、PGUSER環境変数に設定された値が使われます。PGUSER環境変数が設定されていない場合には、USER環境変数に設定された値が使われます。

-d, --dbname オプションは、接続するデータベース名を指定します。オプションが指定されない場合は、PGDATABASE環境変数に設定された値が使われます。PGDATABASE環境変数が設定されていない場合には、データベースに接続するユーザ名と同じ名前のデータベースに接続します。

出力項目

BLOCKER ロックを待機している場合には、対象のロックを獲得しているバックエンドのプロセスID
PID バックエンドのプロセスID
LOCKTYPE ロックの種別
MODE ロックの取得モード
GRANTED ロックが獲得されていれば t 、獲得待ちなら f
QUERY 実行中のクエリ文字列

実行例

postgres ユーザで mydb データベースに接続して、ロックの状態を表示します。

$ pg-show-locks -d mydb -U postgres
+---------+------+----------+---------------------+---------+--------------------------------------------+
| BLOCKER | PID  | LOCKTYPE |         MODE        | GRANTED |                   QUERY                    |
+---------+------+----------+---------------------+---------+--------------------------------------------+
|         | 2076 | relation | AccessExclusiveLock | t       | lock TABLE pgbench_accounts;               |
|    2076 | 2049 | relation | RowShareLock        | f       | select * from pgbench_accounts for update; |
|    2076 | 2436 | relation | RowExclusiveLock    | f       | delete from pgbench_accounts;              |
+---------+------+----------+---------------------+---------+--------------------------------------------+
$