本文へスキップ

セッション履歴

照会期間中に収集されたセッション情報を時系列で照会できる画面です。特定の時間帯にどのセッションがどのSQLを実行したか、各セッションのステータスとリソース使用量はどうであったかを分析できます。

  • 5秒間隔で収集されたアクティブセッションのスナップショットをもとにデータを提供します。

  • セッション推移チャートを通じて、時間帯別のセッション数の変化を視覚的に把握できます。

  • フィールドパネルとフィルターを活用して、特定の条件のセッションのみを照会できます。

セッション履歴を照会する

上部フィルターで照会条件を設定し、フィールドパネルでセッションをフィルタリングした後、セッション推移チャートと一覧で時間帯別のセッション変化とステータスを確認できます。

基本オプション

上部フィルター領域で時間、対象インスタンス、フィルターなどを設定できます。

  • 時間: 照会時間範囲を選択できます。デフォルトで10分単位に設定されており、左右の矢印で移動可能です

  • インスタンス: 照会対象のDBインスタンスを選択可能

  • フィルター: フィールドごとに条件を追加してデータをフィルタリング。複数条件はANDロジックが適用されます

  • 表示モード: テーブルビューまたはツリービューに切り替え可能

  • ダウンロード: CSV形式でエクスポート

フィールドパネル

画面左側のフィールドパネルから、フィルター条件を簡単に追加できます。

  1. フィールド名をクリックすると条件入力ポップアップが表示されます。

  2. 演算子と値を設定してから適用ボタンをクリックすると、上部フィルターに条件が追加されます。

  3. 上部の検索バーでフィールド名を検索できます。フィルター条件を適用すると、条件を満たすセッションのみがチャートとテーブルに表示されます。

    • 例えばqueryフィールドに特定のキーワードを含む条件を設定すると、そのキーワードが含まれるSQLを実行するセッションのみを照会できます。複数条件を適用する場合はANDロジックで動作します。

セッション推移チャート

照会期間中のアクティブセッション数とロック待機セッション数をバーチャートで表示します。X軸は時間、Y軸はセッション数です。最大1時間の範囲で照会できます。

  • 全アクティブセッション数のうち、ロック待機(Lock Wait)セッションは赤色で区別して表示します。

  • 特定の時間帯の総アクティブセッション数とそのうちロック待機セッションの割合を視覚的に把握できます。

  • チャート領域をマウスドラッグすると、その区間にドリルダウンして詳細分析できます。

  • チャートの特定の時間をクリックすると、その時間帯のアクティブセッションのみが下部テーブルに表示されます。

セッション一覧テーブル

収集されたセッション情報を時系列で表示します。下部のページネーションでページを移動でき、ページあたりの表示件数を設定できます。

カラムガイド

各カラムのサポート環境は、そのカラムのデータを照会できる条件を意味します。

  • PostgreSQL: pg_stat_activityビューから収集します。PostgreSQLのバージョンによって提供されるカラムが異なる場合があります。

  • XOS: XOSエージェントを追加インストールした場合のみ照会できます。

  • 共通: DBのバージョンやエージェントのインストール有無にかかわらず、常に提供されます。

基本情報

カラム説明サポート環境
timeセッション情報が収集された時刻共通
instanceDBインスタンス名共通
pidバックエンドプロセスIDPostgreSQL
datname接続中のデータベース名PostgreSQL
usename接続ユーザー名PostgreSQL
client_addrクライアントIPアドレスPostgreSQL
client_hostnameクライアントホスト名PostgreSQL
client_portクライアントポート番号PostgreSQL
application_nameクライアントアプリケーション名PostgreSQL

実行情報

カラム説明サポート環境
stateセッションの現在ステータス(active、idle、idle in transactionなど)PostgreSQL
runtime現在のクエリの実行時間(秒)PostgreSQL
xact_runtime現在のトランザクションの実行時間(秒)PostgreSQL
wait_event現在待機中のイベント名PostgreSQL
wait_event_type待機イベントのタイプ(Lock、LWLock、IO、IPCなど)PostgreSQL 9.6以上
state_change最後にステータスが変更された時刻PostgreSQL
query実行中のSQL文PostgreSQL
query_paramSQLのバインドパラメーター値共通
query_hashSQLハッシュ値共通

時間情報

カラム説明サポート環境
xact_start現在のトランザクション開始時刻PostgreSQL
query_start現在のクエリ開始時刻PostgreSQL
backend_startバックエンドプロセス開始時刻PostgreSQL

バックエンド情報

カラム説明サポート環境
backend_typeバックエンドプロセスタイプ(client backend、autovacuum workerなど)PostgreSQL 10以上
backend_xidバックエンドの現在のトランザクションIDPostgreSQL 9.4以上
backend_xminバックエンドのxmin horizonPostgreSQL 9.4以上
query_idクエリIDPostgreSQL 14以上

リソース使用量

カラム説明サポート環境
cpuusageCPU使用率XOS
cputimeCPU使用時間XOS
rssResident Set Size(物理メモリ使用量)XOS
pssProportional Set Size(比例メモリ使用量)XOS
vsize仮想メモリサイズXOS
ioreadI/O読み取り量XOS
iowriteI/O書き込み量XOS

データ解釈ガイド

主な確認ポイント

カラム意味解釈ポイント
stateセッションの現在ステータスactive: SQL実行中、idle in transaction: トランザクション内アイドル状態 → 長時間維持するとロックの原因になる可能性
runtime現在のクエリの実行時間値が高いほど長時間実行中のクエリ → チューニング対象
xact_runtime現在のトランザクションの実行時間値が高いほど長時間��持中のトランザクション → ロック競合、vacuum遅延の原因になる可能性
wait_event待機中のイベントLock系: ロック競合発生、IO系: ディスクI/Oボトルネック
cpuusageCPU使用率高い場合はCPU集約型クエリ → クエリの最適化が必要

異常セッションの識別

  • runtimeが異常に高いセッション: 長時間実行中のクエリ → 実行計画の確認、インデックスチューニング

  • stateがidle in transactionでxact_runtimeが長いセッション: トランザクションが開いたままアイドル状態 → 他のセッションのロック待機原因、vacuum遅延を引き起こす

  • wait_eventがLock系のセッションが多数: 特定のテーブルやRowへのロック競合 → トランザクションパターンの確認

  • wait_event_typeがIOのセッション: ディスクI/Oボトルネック → クエリの最適化、shared_buffersなどのメモリ設定の確認

実践活用シナリオ

シナリオ1. 特定の時間帯のセッション急増分析

  1. セッション推移チャートでセッション数が急増した区間を確認

  2. その時間帯のセッション一覧でstatewait_eventを確認

  3. 同じqueryが繰り返されているか、特定のclient_addrから集中しているかを分析

  4. フィルターを活用してstateまたはwait_event_type基準でセッションを分類

シナリオ2. 長時間実行セッションの追跡

  1. フィールドパネルでruntimeフィルターを追加して長時間実行セッションを照会

  2. そのセッションのqueryを確認し、どのSQLが長時間実行されているかを把握

  3. wait_eventを確認してクエリ実行中かロック待機中かを判断

  4. 必要に応じてそのSQLの実行計画(Plan)を確認

シナリオ3. idle in transactionセッションの確認

  1. フィールドパネルでstateフィルターに「idle in transaction」条件を追加

  2. xact_runtimeが長いセッションを確認し、トランザクションがどれだけ長く開いているかを把握

  3. そのセッションのapplication_nameclient_addrで原因アプリケーションを特定

  4. 長時間維持されるトランザクションは他のセッションのロック待機とvacuum遅延を引き起こす可能性があるため注意

シナリオ4. ロック競合原因の分析

  1. セッション推移チャートで赤色(ロック待機)の割合が高い区間を確認

  2. フィールドパネルでwait_event_typeフィルターに「Lock」条件を追加

  3. 待機中のセッションのquerydatnameを確認して競合対象を把握

  4. xact_runtimeが長いセッションがロックを保持していないかを確認

追加機能

フィルターの使い方

  1. フィルター追加ボタンをクリックするか、フィールドパネルでフィールド名をクリックします。

  2. フィルターキーを選択します。

    • 文字列(String): =(含む)、!=(含まない)

    • 数値(Number): ==(等しい)、>=(以上)、<=(以下)

  3. 値を入力して適用します。

  4. 複数条件はANDロジックを適用します。

テーブルカラム設定

テーブルヘッダーのカラム選択機能を通じて表示するカラムを追加/削除し、ドラッグで順序を変更できます。