クエリ分析¶
クエリ分析は、データベースモジュールの独立した分析エントリであり、インスタンス横断でのクエリ集約表示をサポートします。複数のデータベースインスタンスを管理する際に、個別のインスタンス詳細ページに移動することなく、グローバルな視点からシステム全体のスロークエリボトルネックを特定できます。
対応データベース種別
クエリ分析は現在 MySQL、PostgreSQL、Oracle、SQL Server に対応しています。データベース種別を切り替えると、一覧はその種別に応じて該当インスタンスのクエリデータを再読み込みします。
機能¶
エクスプローラーが単一インスタンスを単位としたクエリ分析であるのに対し、クエリ分析のコア機能は以下の通りです。
- インスタンス横断集約:同一のビジネス SQL が複数のインスタンスで実行された場合、自動的にグローバルな累積データとして集約されるため、インスタンスごとに調査する必要はありません。
- 類似クエリの統合:パラメータ値が異なる類似 SQL(例:
WHERE id = 1とWHERE id = 2)をシステムが自動的に識別し、同一のクエリテンプレートとして統合して統計を取ります。これにより、同一のステートメントがパラメータの違いで分散表示されることを防ぎます。 - グローバルパフォーマンスソート:総実行時間、実行回数、平均実行時間など複数のディメンションでソート可能で、グローバルなパフォーマンスのボトルネックを迅速に発見できます。
ページレイアウト¶
クエリ分析ページは、上部操作バー、左側クイックフィルター、クエリ一覧、詳細サイドパネルで構成されます。
上部操作バー¶
| 要素 | 説明 |
|---|---|
| データベース種類セレクター | プルダウンで MySQL / PostgreSQL / Oracle / SQL Server を切り替えます。切り替え後、一覧はその種別に応じて再読み込みされます |
| SQL テンプレート検索 | キーワードによる SQL テンプレートの検索に対応します。入力制限は 512 バイトです |
| クエリ総数 | 現在のフィルター条件におけるクエリテンプレートの件数を表示します |
| エクスポート | 現在の一覧ページを CSV ファイル、TXT、またはダッシュボードにエクスポートします |
| 表示項目 | 一覧の列の表示/非表示をカスタマイズできます |
左側クイックフィルター¶
| フィルターディメンション | 説明 |
|---|---|
| インスタンス名 | 複数選択可能。該当データベース種別の全インスタンスを表示します |
| データベースアドレス | 複数選択可能。データベース接続アドレスでフィルターします |
| 総実行時間 | 範囲指定によるフィルター |
| 実行回数 | 範囲指定によるフィルター |
時間範囲の連動
クエリ分析の時間範囲は、グローバルな時間ウィジェットと連動します。一覧データと詳細サイドパネルのトレンドグラフは、選択された時間ウィンドウに基づいてリアルタイムに集約されます。
クエリ一覧¶
一覧には、現在の時間範囲および現在のデータベース種別において、集約されたすべてのクエリテンプレートが表示されます。各レコードは 1 種類の SQL(パラメータは ? に置換済み)を表し、その種類の SQL が選択されたすべてのインスタンスで実行されたデータを集約して表示します。
一覧フィールド¶
| フィールド | 説明 |
|---|---|
| SQL テンプレート | パラメータが ? に置換された SQL テキスト。一覧では最大 2 行表示されます。クリックすると右側の詳細サイドパネルが展開されます |
| 実行回数 | 時間範囲内における、該当クエリ種別の全インスタンスでの累計実行回数 |
| 平均実行時間 | 該当クエリ種別の平均実行時間 |
| 総実行時間 | 時間範囲内における、該当クエリ種別の全インスタンスでの累計実行時間 |
| パフォーマンスオーバーヘッド割合 | 該当クエリ種別の累計総実行時間が、全クエリの累計総実行時間に占める割合(パーセント)。プログレスバーで視覚化されます。割合が高いほど、該当クエリがシステム全体のパフォーマンスに与える影響が大きいことを示します |
| 平均スキャン行数 | 該当クエリ種別の全インスタンスにおける平均スキャン/返却行数。クエリのデータスキャン範囲を評価するために使用します |
| トレンド | 現在の時間範囲における実行回数のミニ折れ線グラフ(スパークライン)。一覧ページの時間範囲と連動します |
SQL テンプレートと元の SQL
一覧に表示される SQL テンプレートは、具体的なパラメータ値を ? に置換したものです。これにより、ステートメントの構造自体に注目できます。詳細サイドパネルでは、該当テンプレートの直近に出現した元の SQL サンプルを確認でき、ワンクリックで全文をコピーできます。
クエリ詳細サイドパネル¶
一覧の任意の行をクリックすると、右側からクエリ詳細サイドパネルがスライド表示され、該当クエリ種別のグローバルなパフォーマンスデータが表示されます。サイドパネルには以下のタブが含まれます。
完全な SQL¶
サイドパネル上部に固定表示されます。該当クエリ種別の完全な SQL テンプレート(パラメータは ? に置換済み)が表示され、ワンクリックでコピーできます。
パフォーマンストレンド¶
一覧ページの時間範囲と連動し、時系列グラフで該当クエリ種別の 3 つのコアメトリクスを表示します。
| グラフ | 説明 |
|---|---|
| 実行回数 | 回/分。該当クエリ種別の並行処理負荷のトレンドを反映します |
| 平均実行時間 | ミリ秒(ms)。該当クエリ種別の単回実行効率のトレンドを反映します |
| 総実行時間 | ミリ秒(ms)。該当クエリ種別のシステム全体における時間消費のトレンドを反映します |
各メトリクスは独立した時系列グラフで表示され、時間間隔のフィルターやグラフのエクスポートに対応しています。
インスタンス¶
該当クエリ種別の各インスタンスにおける実行分布を表示し、ボトルネックがどのインスタンスに集中しているかの判断に役立ちます。
| フィールド | 説明 |
|---|---|
| データベースアドレス | インスタンスの接続アドレス |
| インスタンス名 | データベースインスタンスの識別子 |
| 実行回数 | 該当インスタンスにおける該当クエリ種別の実行回数。プログレスバーで視覚化されます |
| 平均実行時間 | 該当インスタンスにおける該当クエリ種別の平均実行時間 |
| 総実行時間 | 該当インスタンスにおける該当クエリ種別の累計実行時間。プログレスバーで視覚化されます |
| 平均送信行数 | 該当インスタンスにおける該当クエリ種別の平均返却行数 |
| エラー回数 | 該当インスタンスにおける該当クエリ種別の実行失敗回数 |
- インスタンス名はクリック可能で、新しいページで該当インスタンスの単一インスタンスクエリ詳細ページが開きます(既存のエクスプローラー詳細を再利用します)。
- 検索ボックスでインスタンス名またはデータベースアドレスによるフィルターが可能です。
ユーザー¶
該当クエリ種別の各データベースアカウントにおける実行分布を表示します。
| フィールド | 説明 |
|---|---|
| ユーザー | データベースアカウント名 |
| サンプル数 | 該当ユーザーが該当クエリ種別を実行した回数 |
| 平均実行時間 | 該当ユーザーが該当クエリ種別を実行した平均時間 |
- 検索ボックスでユーザー名によるフィルターが可能です。
クエリサンプル¶
該当クエリ種別の実際のサンプリングレコードを表示します。フィールドはデータベース種別によって異なります。
MySQL のフィールド例:
| フィールド | 説明 |
|---|---|
| 時間 | サンプリングが発生したタイムスタンプ |
| データベース | 対象データベース(スキーマ) |
| 実行時間 | 該当サンプルの実際の実行時間 |
| ユーザー | 該当サンプルを実行したデータベースアカウント |
| 待機グループ | 該当サンプルの待機イベントグループ |
データベース種別によるサンプルフィールドの差異
クエリサンプルの表示フィールドはデータベース種別に関連します。例えば SQL Server では「セッション ID、待機タイプ、CPU 時間」などのフィールドが表示され、Oracle や PostgreSQL でもそれぞれのネイティブパフォーマンスフィールドが表示されます。具体的なフィールドは、実際のページ表示に準じます。
メトリクス計算の説明¶
クエリ分析における集約メトリクスは、以下のロジックで計算されます。
| メトリクス | 計算の説明 |
|---|---|
| 実行回数 | 全インスタンスにおける該当クエリ種別の実行回数の累積 |
| 平均実行時間 | 全インスタンスの累計総実行時間 ÷ 全インスタンスの累計実行回数 |
| 総実行時間 | 全インスタンスにおける該当クエリ種別の実行時間の累積 |
| パフォーマンスオーバーヘッド割合 | 該当クエリ種別の累計総実行時間 ÷ 全クエリの累計総実行時間 × 100% |
| 平均スキャン行数 | 全インスタンスにおける該当クエリ種別の平均スキャン行数の平均値 |
データの鮮度に関する注意
クエリ分析のデータは、ユーザーが選択した時間範囲に基づいてリアルタイムに集約されます。選択した時間範囲内でデータが報告されていないインスタンスは、集約結果に表示されません。