このページでは、データベースでアクティブなクエリをモニタリングしてトラブルシューティングする方法について説明します。これらのクエリをモニタリングすることで、システムのレイテンシが発生している原因と CPU 使用率が高い原因を特定しやすくなります。
[Query Insights] ダッシュボードでは、アクティブなトランザクションの概要と、トランザクションのリスト(関連するクエリと統計情報を含む)を確認できます。トランザクションはその開始時刻順に表示されます。実行中のクエリが大量にある場合、結果には全クエリの一部しか表示されないことがあります。
始める前に
カスタムロールを作成し、次の権限を追加します。次に、クエリ分析情報を使用する必要がある各ユーザー アカウントにロールを付与します。
タスク | ロール | 権限 |
---|---|---|
データベース アクティビティの概要と長時間実行トランザクションを表示する |
databaseinsights.viewer
|
databaseinsights.activeQueries.fetch databaseinsights.activitySummary.fetch
|
インスタンス アクティビティの概要を表示する |
cloudsql.viewer
|
なし |
セッションの終了 |
cloudsql.editor databaseinsights.operationsAdmin
|
なし |
アクティブ クエリを有効にする
アクティブ クエリを有効にするには、次の手順を実施します。
-
Google Cloud コンソールで、[Cloud SQL インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [構成] タイルで、[構成の編集] をクリックします。
- [Query Insights] ペインを開きます。
- [クエリ分析情報を有効にする] チェックボックスがオフになっている場合はオンにします。アクティブ クエリは、クエリ分析情報が有効になっている場合に使用できます。
- [保存] をクリックします。
アクティブ クエリを表示する
アクティブ クエリを表示するには、次の手順を実施します。
アクティブ クエリを表示するユーザーごとに、このロールを追加します。
Google Cloud コンソールで、[Cloud SQL インスタンス] ページに移動します。
インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
次のいずれかを行うと、[Query Insights] ダッシュボードが表示されます。
- [Query Insights] タブを選択する。
- [クエリ分析情報に移動すると、クエリとパフォーマンスに関する詳細情報を確認できます] をクリックします。[Query Insights] ダッシュボードが開きます。インスタンスの詳細が上部に表示されます。
[アクティブなクエリ] タブをクリックします。
ここで、[最も実行時間の長いトランザクション] の表に表示されるクエリ情報を変更できます。
- データベース: 特定またはすべてのデータベースのクエリ負荷がフィルタされます。
- ユーザー: 特定のユーザー アカウントからのクエリ負荷がフィルタされます。
正規化されたアクティブ クエリを表示する
[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 エディションのクエリ分析情報も有効にする必要があります。
長時間実行オペレーションの終了には時間がかかる場合があります。
クエリまたはトランザクションを終了するには、次の手順を実施します。
- [最も実行時間の長いトランザクション] の表でクエリを選択します。
- [アクション] 列で [セッションを終了] をクリックします。
- [セッションを終了] ウィンドウで [確認] をクリックします。