本文へスキップ

ロックツリー

ロックツリー画面では、ロック(Lock)によって互いに待機しているセッションをツリー形式で確認できます。どのセッションがリソースを保持しており(holder)、どのセッションがそれを待っているか(waiter)を親子関係で表示するため、デッドロックの原因となるセッションを素早く見つけるのに役立ちます。

ロックとロックツリー

簡単に言うと、ロックは同じデータを同時に変更できないようにかける施錠装置です。あるセッションがデータを修正している間、他のセッションは待たなければなりません。待機するセッションが増えて互いに絡み合うと、デッドロックになります。ロックツリーはこの待機関係を木の形に展開し、一番上でリソースを保持しているセッション(原因)を見つけられるようにします。

基本画面の案内

画面上部でインスタンスとデータベースを選択します。まずLock Wait Sessionsチャートでロック待機が発生した時点を選択すると、その時点のLock TreeとTotal Locksを確認できます。数分以上持続したロックを示してくれるため、長く拘束されているロックを素早く見つけられます。

領域説明
Lock Wait Sessions時間帯別のロック待機セッション数チャート。照会する時点を選択
Lock Tree選択時点のロック待機関係をツリーで表示
Total Locks選択時点の全ロック数

カラム案内

リソースを保持しているセッション(holder)と待機しているセッション(waiter)を、次のカラムで表示します。

ColumnDescription
instanceセッションが実行中のノード
node_idノード識別子
session_idセッションID
db使用中のデータベース
user接続ユーザー
tx_stateトランザクション状態
lock_typeロックタイプ
row_locks行ロック数
partition_locksパーティションロック数
activity作業名
raw_task実行中のSQL原文
sql_paramSQLパラメーター
command実行中のコマンドの種類
elapsed_time_ms実行時間(ミリ秒)

ここで混同しやすいのはセッションの識別方法です。MySQLはセッションID1つで識別しますが、SingleStoreは分散環境のため、ノード識別子とセッションIDを合わせて(node_id + session_id)マッチングキーとして使用します。同じセッションIDでもノードが異なれば別のセッションだからです。row_lockspartition_locksは、分散環境でロックが行単位かパーティション単位かを区別してくれます。

ロックの解消

原因セッション(holder)を確認した後、必要に応じてそのセッションを停止できます。セッションの停止方法はセッション履歴インスタンスモニタリングのドキュメントを参照してください。

AIで分析する

画面でWhaTap AIボタンをクリックすると、WhaTap AIチャットウィンドウが開き、照会した画面データを要約して分析した結果が対話形式で表示されます。結果を読んだ後、同じ対話で続けて質問できます。

  • 分析に使用するデータは照会範囲全体の推移、30分区間の集計、選択時点のロックツリースナップショットの3つです。

  • 分析対象は画面に照会されたデータです。照会条件を変更してから再度分析すると、変更後のデータを基準に分析します。

  • 対話履歴には AI分析 - {画面名} 形式で記録されます。