ロックツリー
ホーム画面 > プロジェクト選択 > 分析 > ロックツリー
一日の間に発生したロック(lock)の推移を分析するツールです。この機能によってロックを発生させたセッション(lock holder)と待機しているセッション(lock waiter)に対するツリー構造を視覚的に確認できます。特定時点で発生したロック情報のholderとwaiter間の関係を分析できます。WhaTapのロックツリー機能により、データベース管理者はロック関連の問題を迅速に識別して解決でき、データベースの性能を最適化できます。
主な機能は次のとおりです。
-
ロック推移分析: 設定した照会期間に発生したロックの推移を時間とともに追跡し、グラフで表示します。これにより、ロックがどのように発生し、解消されるかを視覚的に把握できます。
-
ロックHolderおよびWaiter確認: 各ロックに対するholderとwaiterをツリー構造で確認できます。これにより、特定のロックが発生した状況でロックを発生させたセッションと待機するセッションとの関係を把握できます。
-
セッション間の関係分析: ロックを発生させたセッションと待機するセッションとの関係を分析し、クエリー実行およびトランザクション処理過程で発生したロックの原因を識別できます。
- 時間別ロックトレンドの視覚化: 1-Min Lock TrendsとLock Wait Sessions機能により、ロック発生データを時間単位で分析できます。
基本的な使い方

時間、
インスタンスで照会する日付と時間、インスタンスを選択します。設定した時間にロックが発生した場合は、Lock Wait Sessionsと下段のLock Treeテーブルに照会されているデータが表示されます。
-
1つのチャート内で最大2週間のデータを一度に確認できます。グラフチャートで特定の時間をクリックすると、画面下のテーブルから選択した時間のロック情報を確認できます。画面下の詳細情報から秒単位ボタンをクリックすると、5秒単位でロック情報を照会できます。
ノートLock Wait Sessionsチャートの右上に表示されているタグを通じて照会の単位を確認できます。
-
グラフチャートで特定時間領域をドラッグ(ドリルダウン)するほど、詳細時間のチャートとロックツリーを照会できます。
-
チャートで3時間以内にドラッグして、5秒単位のデータを照会できます。ただし、5秒単 位のデータは、最近1か月の範囲に限って照会できます。1か月前のデータは、5分要約データでしか閲覧できません。例えば、40 日前のロックツリーデータをドラッグ(ドリルダウン)すると、5分要約データは照会できますが、5秒データは照会できません。
Lock Wait Sessions
Lock Wait Sessionsは、ロック待機セッションの情報を分析できる機能です。照会期間によってロック待機セッションデータを3時間以上照会すると5分間隔で、3時間未満照会すると5秒間隔で提供します。また、チャートをドラッグして時間範囲を流動的に調整できます。
1-Min Lock Trends
Lock Wait Sessionsで特定の時間帯をクリックすると、その時間基準で15分前から15分後までの計30分間のロック発生状況を可視化して表示します。これにより、30分単位でロック発生トレンドを効果的に分析できます。
Total Locksは、その時間帯に発生したロックの合計個数を意味します。
時間照会
Lock Wait Sessionsでクリックした時間に発生した最大ロック数を基準に1-Min Lock TrendsとLock Treeテーブルの時間が設定されます。これにより、ロックが最も多く発生した区間を把握できます。

Lock Wait Sessionsはそのままにして1-Min Lock Trendsチャートで他の時間帯のバーをクリックした場合、該当する分の最大ロック数を持つ秒の時点でLock Treeテーブルの時間範囲が同期されます。これにより、時間帯を変更する時にLock Treeテーブルに反映された情報を確認できます。

-
3時間以上照会した場合 (5分単位のデータ使用)
照会時点から5分の区間でバーの色が濃く表示されます。
07:15:00時点をクリックした場合、07:15:00~07:20:00区間バーのチャートの色が濃く表示されます。
-
3時間未満照会した場合 (5秒単位のデータ使用)
短い時間間隔で発生したロック状況を分析する時に役立ちます。

カラム情報ガイド
- Active session
- Lock tree
- Process information
| 項目 | 説明 |
|---|---|
db | データベース名 |
user | SQL実行アカウント |
application | クライアントアプリケーション名 |
client_host | 接続されたクライアントのホスト名(client_addrの逆引きDNS参照で報告されます) |
client_addr | クライアントのIPアドレス |
client_port | クライアントのポート番号(Unixソケットを使用する場合は-1) |
query_hash | クエリのハッシュ値(WhaTap内部管理値) |
query_start | 現在アクティブ状態のクエリが開始された時間(アクティブ状態でない場合、最後にクエリが開始された時間) |
state | バックエンドプロセスの現在の状態(active/idleなど) |
state_change | stateが変更された最近の時間 |
xact_start | そのプロセスの現在のトランザクションが開始された時間(アクティブTXがない場合はnull) |
backend_start | そのバックエンドプロセスが開始された時間 |
backend_xmin | バックエンドプロセスが処理中のxidの最小値 |
backend_type | バックエンドプロセスのタイプ、autovacuum worker、logical replication launcher、client backend、checkpointerなど |
backend_xid | バックエンドが使用中のxid |
wait_event_type | バックエンドプロセスが待機中のイベントtype |
wait_event | バックエンドプロセスが現在待機中の場合は、待機イベント名 |
WhaTapは、クライアントに関する情報をデフォルトで保存します。
| 項目 | 説明 |
|---|---|
| Instance | インスタンス(エージェント)名 |
| pid | セッションID |
| lock_mode | ホルダーセッションのロックモード - RowExclusiveLock:INSERT、UPDATE、DELETE - AccessExclusiveLock:DDL(ALTER、DROP、TRUNCATE など)によるロック - AccessShareLock:SELECT 時に使用 ほとんどすべてのロックと共存可能 - ShareLock:LOCK TABLE ... IN SHARE MODE |
| holder_relation | ロックを保有しているセッションがアクセス中のテーブル名またはオブジェクト識別子 |
| waiter_type | ロックがどの対象に対してかかっているかを示します - relation:テーブルにかかっているロック tuple:特定の行(row)にかかっているロック - transactionid:トランザクションにかかっているロック |
| waiter_relation | ロックを待機しているセッションがアクセス中のテーブル名またはオブジェクト識別子 |
| lock_request | ロックを待機しているセッションのロックモード lock_mode を参照 |
次の項目は、XOSエージェントをインストールした場合に収集される指標です。
| 項目 | 説明 | 単位 |
|---|---|---|
pid | プロセスID | - |
cpuusage | プロセ スが使用するCPU使用率 | % |
cputime | プロセスがこれまでに使用した累積CPU時間 | 秒 |
elapse | プロセスが実行されてからの経過時間 | 秒 |
vsize | Virtual memory size. 全体の仮想メモリ使用量(RAM + Swap + 予約) | KB |
rss | Resident Set Size. 現在のプロセスが占有している実際の物理メモリサイズ | KB |
pss | Proportional Set Size. 共有メモリを含む実際の物理メモリ使用量 | KB |
state | プロセスの現在の状態コード(例:R、S、D、T、Z など) | - |
ioread | 累積読み込みバイト数(read_bytes) | バイト(B) |
iowrite | 累積書き込みバイト数(write_bytes) | バイト(B) |
uid | このプロセスを実行したユーザーID | - |
cmd | 実行されたコマンドの短縮形式 | - |
longcmd | 実行されたコマンドの完全な形式(フルパスおよび引数を含む) | - |