アクティブなクエリをモニタリングする

このページでは、データベースでアクティブなクエリをモニタリングしてトラブルシューティングする方法について説明します。これらのクエリをモニタリングすることで、システムのレイテンシが発生している原因と CPU 使用率が高い原因を特定しやすくなります。

[Query Insights] ダッシュボードでは、アクティブなトランザクションの概要と、トランザクションのリスト(関連するクエリと統計情報を含む)を確認できます。トランザクションはその開始時刻順に表示されます。実行中のクエリが大量にある場合、結果には全クエリの一部しか表示されないことがあります。

始める前に

カスタムロールを作成し、次の権限を追加します。次に、Query Insights を使用する必要がある各ユーザー アカウントにロールを付与します。

タスク ロール 権限
データベース アクティビティの概要と長時間実行トランザクションを表示する databaseinsights.viewer databaseinsights.activeQueries.fetch
databaseinsights.activitySummary.fetch
インスタンス アクティビティの概要を表示する cloudsql.viewer なし
セッションを終了する cloudsql.editor
databaseinsights.operationsAdmin
なし

アクティブ クエリを有効にする

アクティブ クエリを有効にするには、次の手順を実施します。

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [構成] タイルで、[構成の編集] をクリックします。
  4. [Query Insights] ペインを開きます。
  5. [Query Insights を有効にする] チェックボックスがオフになっている場合はオンにします。 Query Insights が有効になっていると、アクティブなクエリを使用できます。
  6. [保存] をクリックします。

アクティブ クエリを表示する

アクティブ クエリを表示するには、次の手順を実施します。

  1. アクティブ クエリを表示するユーザーごとに、このロールを追加します。

  2. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  3. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。

  4. 次のいずれかを行うと、[Query Insights] ダッシュボードが表示されます。

    • [Query Insights] タブを選択する。
    • [クエリ分析情報に移動すると、クエリとパフォーマンスに関する詳細情報を確認できます] をクリックする。 [Query Insights] ダッシュボードが開きます。インスタンスの詳細が上部に表示されます。
  5. [アクティブなクエリ] タブをクリックします。

    ここで、[最も実行時間の長いトランザクション] のテーブルに表示されるクエリ情報を変更できます。

    • データベース: 特定またはすべてのデータベースのクエリ負荷がフィルタされます。
    • ユーザー: 特定のユーザー アカウントからのクエリ負荷がフィルタされます。

正規化されたアクティブ クエリを表示する

[Query Insights] ダッシュボードでは、正規化されたアクティブ クエリを使用して、実行時間の長さが上位のトランザクションのリストを確認できます。正規化されたアクティブ クエリは、センシティブ データを削除してダイジェストを返します。次の例では、使用する値は異なってもダイジェストは同じです。

  • 通常のクエリ

    • select * from test_table where id=1;
    • select * from test_table_where id=2;
  • ダイジェストまたは正規化されたクエリ

    • select * from test_table where id=?;

異なるセッションで実行されるクエリは、ダッシュボードに別々のエントリとして表示されます。

実行時間の長さが上位のトランザクションを表示する

[Query insights] ダッシュボードの [最も実行時間の長いトランザクション] のテーブルには、次の列があります。

列名 説明
セッション ID セッションの固有識別子。
クエリ SQL クエリテキスト。
セッションの状態 セッションの状態。
クエリの実行時間 クエリが実行されている時間。
待機イベントタイプ クエリ実行のためにリクエストがブロックされている場合の待機イベントのタイプ。
ブロックしているセッションの ID リクエストをブロックしているセッションの ID。
トランザクションの待機時間 セッションがブロックされている場合の現在の待機時間。
変更されたトランザクション行 このクエリによってクライアントに返された行数。
% 完了 クエリが進行中であると報告される場合の、完了した作業の割合。
データベース セッションが実行されているデータベース。
アプリケーション名 セッションを開始したアプリケーションの名前。
ユーザー データベースに接続しているユーザーの名前。
クライアント アドレス クエリを送信したクライアントに固有の IP アドレス。
アクション セッションを終了するためのリンクが含まれています。

表示内容は 60 秒ごとに自動的に更新されます。

セッションを終了する

クエリまたはトランザクションを終了するには、databaseinsights.operationsAdmin ロールが必要です。詳細については、IAM の基本ロールと事前定義ロールをご覧ください。

クエリまたはトランザクションを終了するには、Cloud SQL Enterprise Plus エディションの Query Insights も有効にされている必要があります。

長時間実行オペレーションの終了には時間がかかることがあります。

クエリまたはトランザクションを終了するには、次の手順を実施します。

  1. [最も実行時間の長いトランザクション] の表でクエリを選択します。
  2. [アクション] 列で [接続を終了] をクリックします。
  3. [接続を終了] ウィンドウで、[確認] をクリックします。

次のステップ