セッション履歴
照会期間中に収集されたセッション情報を時系列で照会できる画面です。特定の時間帯にどのセッションがどのSQLを実行したか、各セッションのステータスとリソース使用量はどうであったかを分析できます。
-
5秒間隔で収集されたアクティブセッションのスナップショットをもとにデータを提供します。
-
セッション推移チャートを通じて、時間帯別のセッション数の変化を視覚的に把握できます。
-
フィールドパネルとフィルターを活用して、特定の条件のセッションのみを照会できます。
セッション履歴を照会する
上部フィルターで照会条件を設定し、フィールドパネルでセッションをフィルタリングした後、セッション推移チャートと一覧で時間帯別のセッション変化とステータスを確認できます。
基本オプション
上部フィルター領域で時間、対象インスタンス、フィルターなどを設定できます。
-
時間: 照会時間範囲を選択できます。デフォルトで10分単位に設定されており、左右の矢印で移動可能です
-
インスタンス: 照会対象のDBインスタンスを選択可能
-
フィルター: フィールドごとに条件を追加してデータをフィルタリング。複数条件はANDロジックが適用されます
-
表示モード: テーブルビューまたはツリービューに切り替え可能
-
ダウンロード: CSV形式でエクスポート
フィールドパネル
画面左側のフィールドパネルから、フィルター条件を簡単に追加できます。
-
フィールド名をクリックすると条件入力ポップアップが表示されます。
-
演算子と値を設定してから適用ボタンをクリックすると、上部フィルターに条件が追加されます。
-
上部の検索バーでフィールド名を検索できます。フィルター条件を適用すると、条件を満たすセッションのみがチャートとテーブルに表示されます。
- 例えば
queryフィールドに特定のキーワードを含む条件を設定すると、そのキーワードが含まれるSQLを実行するセッションのみを照会できます。複数条件を適用する場合はANDロジックで動作します。
- 例えば
セッション推移チャート
照会期間中のアクティブセッション数とロック待機セッション数をバーチャートで表示します。X軸は時間、Y軸はセッション数です。最大1時間の範囲で照会できます。
-
全アクティブセッション数のうち、ロック待機(Lock Wait)セッションは赤色で区別して表示します。
-
特定の時間帯の総アクティブセッション数とそのうちロック待機セッションの割合を視覚的に把握できます。
-
チャート領域をマウスドラッグすると、その区間にドリルダウンして詳細分析できます。
-
チャートの特定の時間をクリックすると、その時間帯のアクティブセッションのみが下部テーブルに表示されます。
セッション一覧テーブル
収集されたセッション情報を時系列で表示します。下部のページネーションでページを移動でき、ページあたりの表示件数を設定できます。
カラムガイド
各カラムのサポート環境は、そのカラムのデータを照会できる条件を意味します。
-
PostgreSQL:
pg_stat_activityビューから収集します。PostgreSQLのバージョンによって提供されるカラムが異なる場合があります。 -
XOS: XOSエージェントを追加インストールした場合のみ照会できます。
-
共通: DBのバージョンやエージェントのインストール有無にかかわらず、常に提供されます。
基本情報
| カラム | 説明 | サポート環境 |
|---|---|---|
time | セッション情報が収集された時刻 | 共通 |
instance | DBインスタンス名 | 共通 |
pid | バックエンドプロセスID | PostgreSQL |
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_param | SQLのバインドパラメーター値 | 共通 |
query_hash | SQLハッシュ値 | 共通 |
時間情報
| カラム | 説明 | サポート環境 |
|---|---|---|
xact_start | 現在のトランザクション開始時刻 | PostgreSQL |
query_start | 現在のクエリ開始時刻 | PostgreSQL |
backend_start | バックエンドプロセス開始時刻 | PostgreSQL |
バックエンド情報
| カラム | 説明 | サポート環境 |
|---|---|---|
backend_type | バックエンドプロセスタイプ(client backend、autovacuum workerなど) | PostgreSQL 10以上 |
backend_xid | バックエンドの現在のトランザクションID | PostgreSQL 9.4以上 |
backend_xmin | バックエンドのxmin horizon | PostgreSQL 9.4以上 |
query_id | クエリID | PostgreSQL 14以上 |
リソース使用量
| カラム | 説明 | サポート環境 |
|---|---|---|
cpuusage | CPU使用率 | XOS |
cputime | CPU使用時間 | XOS |
rss | Resident Set Size(物理メモリ使用量) | XOS |
pss | Proportional Set Size(比例メモリ使用量) | XOS |
vsize | 仮想メモリサイズ | XOS |
ioread | I/O読み取り量 | XOS |
iowrite | I/O書き込み量 | XOS |
データ解釈ガイド
主な確認ポイント
| カラム | 意味 | 解釈ポイント |
|---|---|---|
state | セッションの現在ステータス | active: SQL実行中、idle in transaction: トランザクション内アイドル状態 → 長時間維持するとロックの原因になる可能性 |
runtime | 現 在のクエリの実行時間 | 値が高いほど長時間実行中のクエリ → チューニング対象 |
xact_runtime | 現在のトランザクションの実行時間 | 値が高いほど長時間��持中のトランザクション → ロック競合、vacuum遅延の原因になる可能性 |
wait_event | 待機中のイベント | Lock系: ロック競合発生、IO系: ディスクI/Oボトルネック |
cpuusage | CPU使用率 | 高い場合はCPU集約型クエリ → クエリの最適化が必要 |
異常セッションの識別
-
runtimeが異常に高いセッション: 長時間実行中のクエリ → 実行計画の確認、インデックスチューニング -
stateがidle in transactionでxact_runtimeが長いセッション: トランザクションが開いたままアイドル状態 → 他のセッションのロック待機原因、vacuum遅延を引き起こす -
wait_eventがLock系のセッションが多数: 特定のテーブルやRowへのロック競合 → トランザクションパターンの確認 -
wait_event_typeがIOのセッション: ディスクI/Oボトルネック → クエリの最適化、shared_buffersなどのメモリ設定の確認
実践活用シナリオ
シナリオ1. 特定の時間帯のセッション急増分析
-
セッション推移チャートでセッション数が急増した区間を確認
-
その時間帯のセッション一覧で
state、wait_eventを確認 -
同じ
queryが繰り返されているか、特定のclient_addrから集中しているかを分析 -
フィルターを活用して
stateまたはwait_event_type基準でセッションを分類
シナリオ2. 長時間実行セッションの追跡
-
フィールドパネルで
runtimeフィルターを追加して長時間実行セッションを照会 -
そのセッションの
queryを確認し、どのSQLが長時間実行されているかを把握 -
wait_eventを確認してクエリ実行中かロック待機中かを判断 -
必要に応じてそのSQLの実行計画(Plan)を確認
シナリオ3. idle in transactionセッションの確認
-
フィールドパネルで
stateフィルターに「idle in transaction」条件を追加 -
xact_runtimeが長いセッションを確認し、トランザクションがどれだけ長く開いているかを把握 -
そのセッションの
application_nameとclient_addrで原因アプリケーションを特定 -
長時間維持されるトランザクションは他のセッションのロック待機とvacuum遅延を引き起こす可能性があるため注意
シナリオ4. ロック競合原因の分析
-
セッション推移チャートで赤色(ロック待機)の割合が高い区間を確認
-
フィールドパネルで
wait_event_typeフィルターに「Lock」条件を追加 -
待機中のセッションの
queryとdatnameを確認して競合対象を把握 -
xact_runtimeが長いセッションがロックを保持していないかを確認
追加機能
フィルターの使い方
-
フィルター追加ボタンをクリックするか、フィールドパネルでフィールド名をクリックします。
-
フィルターキーを選択します。
-
文字列(String):
=(含む)、!=(含まない) -
数値(Number):
==(等しい)、>=(以上)、<=(以下)
-
-
値を入力して適用します。
-
複数条件はANDロジックを適用します。
テーブルカラム設定
テーブルヘッダーのカラム選択機能を通じて表示するカラムを追加/削除し、ドラッグで順序を変更できます。