このページでは、データベースでアクティブなクエリをモニタリングしてトラブルシューティングする方法について説明します。これらのクエリをモニタリングすることで、システムのレイテンシが発生している原因と CPU 使用率が高い原因を特定しやすくなります。
[Query Insights] ダッシュボードでは、アクティブなトランザクションの概要と、トランザクションのリスト(関連するクエリと統計情報を含む)を確認できます。トランザクションはその開始時刻順に表示されます。多数のクエリが実行されている場合、結果はクエリ全体のサブセットに制限される可能性があります。
始める前に
アクティブなクエリをモニタリングするには、Cloud SQL Enterprise エディションまたは Cloud SQL Enterprise Plus エディションのいずれかを使用します。
アクティブなクエリでセッションまたは長時間実行トランザクションを終了するには、Cloud SQL インスタンスに Cloud SQL Enterprise Plus エディションを使用する必要があります。
Cloud SQL のエディションの詳細については、Cloud SQL のエディションの概要をご覧ください。
必要なロールと権限
アクティブなクエリを表示するために必要な権限を取得するには、Cloud SQL インスタンスをホストするプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
インスタンス アクティビティの概要を表示する。
Cloud SQL 閲覧者 (
roles/cloudsql.viewer
) -
データベース アクティビティの概要と長時間実行トランザクションを表示する。
データベース分析情報閲覧者 (
roles/databaseinsights.viewer
) -
セッションまたは長時間実行トランザクションを終了する。
- Cloud SQL 編集者(
roles/cloudsql.editor
) -
データベース分析情報オペレーション管理者 (
roles/databaseinsights.operationsAdmin
)
- Cloud SQL 編集者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
これらの事前定義ロールには、アクティブなクエリの表示に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
アクティブなクエリを表示するには、次の権限が必要です。
- データベース アクティビティの概要と長時間実行トランザクションを表示する
-
databaseinsights.activeQueries.fetch
-
databaseinsights.activitySummary.fetch
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
アクティブ クエリを有効にする
Query Insights を有効にすると、アクティブ クエリが自動的に有効になります。アクティブなクエリでセッションまたは長時間実行トランザクションを終了するには、Cloud SQL Enterprise Plus エディションの Query Insights を使用する必要があります。
アクティブ クエリを無効にする
Query Insights を無効にせずに、アクティブなクエリを無効にすることはできません。アクティブなクエリと Query Insights を無効にするには、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 秒ごとに自動的に更新されます。
セッションを終了する
セッションまたは長時間実行トランザクションを終了するには、Cloud SQL Enterprise Plus エディションを使用して、Cloud SQL Enterprise Plus エディションの Query Insights を有効にする必要があります。
長時間実行オペレーションの終了には時間がかかることがあります。
クエリまたはトランザクションを終了するには、次の手順を実施します。
- [最も実行時間の長いトランザクション] の表でクエリを選択します。
- [アクション] 列で [接続を終了] をクリックします。
- [接続を終了] ウィンドウで、[確認] をクリックします。