このページでは、データベースでアクティブなクエリをモニタリングしてトラブルシューティングする方法について説明します。これらのクエリをモニタリングすると、システムのレイテンシや CPU 使用率が高い場合の原因を特定できます。
[Query Insights] ダッシュボードでは、アクティブなトランザクションの概要と、トランザクションのリスト(関連するクエリと統計情報を含む)を確認できます。トランザクションはその開始時刻順に表示されます。実行中のクエリが大量にある場合、結果には全クエリの一部しか表示されないことがあります。
始める前に
アクティブ クエリを表示するには、次のことを行う必要があります。
- Gemini in Databases を設定する。
- カスタムロールを作成し、次の権限を追加する。
タスク ロール 権限 推奨事項を表示する databaseinsights.viewer
databaseinsights.activeQueries.fetch
databaseinsights.activitySummary.fetch
推奨事項を終了する databaseinsights.operationsAdmin
なし
アクティブ クエリを表示する
アクティブ クエリを表示するには、次のことを行います。
アクティブ クエリを表示するユーザーごとに、このロールを追加します。
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
次のいずれかを行うと、[Query Insights] ダッシュボードが表示されます。
- [Query Insights] タブを選択する。
- [クエリ分析情報に移動すると、クエリとパフォーマンスに関する詳細情報を確認できます] をクリックする。[Query Insights] ダッシュボードが開きます。インスタンスの詳細が上部に表示されます。
[アクティブ クエリのビュー] タブをクリックします。
ここで、[最も実行時間の長いトランザクション] の表に表示されるクエリ情報を変更できます。
- データベース: 特定またはすべてのデータベースのクエリ負荷がフィルタされます。
- ユーザー: 特定のユーザー アカウントからのクエリ負荷がフィルタされます。
- すべてのアクティブ クエリの概要スコアカード: 次のパラメータに基づいて接続の合計数が表示され、すべてのアクティブ クエリの概要が示されます。
- 接続状態別に分類されたアクティブな接続の分布。
- トランザクションの状態に基づくアクティブなトランザクションの分布。
- クエリの継続時間の分布。
- 最も実行時間の長いトランザクション: 実行中の上位 50 件のクエリ(アクティブ状態とトランザクションのアイドル状態)の概要を、実行時間の長い順に表示します。テーブル内のアクティブ クエリをフィルタして並べ替えることができます。
正規化されたアクティブ クエリを表示する
[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 | 接続の固有識別子またはスレッド ID。 |
クエリ | SQL クエリテキスト。 |
ステータス | 接続のステータス。 |
セッション継続期間 | 最後に実行されたセッションの継続時間。 |
トランザクションの実行時間 | アクティブなトランザクションの実行時間。 |
クエリの実行時間 | そのトランザクションで最後に実行されたクエリの継続時間。 |
待機イベントタイプ | 発生している待機イベントの待機イベントタイプ。 |
待機イベント | 発生中の待機イベント。 |
データベース | この接続が実行されているデータベースの名前。 |
アプリケーション名 | この接続が実行されているアプリケーションの名前。 |
ユーザー名 | データベースに接続しているユーザーの名前。 |
クライアント アドレス | クエリを送信したクライアントの特定の IP アドレス。 |
アクション | トランザクションを終了するためのリンクが含まれています。 |
表示内容は 60 秒ごとに自動的に更新されます。
プロセスを終了する
クエリまたはトランザクションを終了するには、databaseinsights.operationsAdmin
ロールが必要です。詳細については、IAM の基本ロールと事前定義ロールをご覧ください。
クエリまたはトランザクションを終了するには、次の手順を実施します。
- [最も実行時間の長いトランザクション] の表でクエリを選択します。
- [アクション] 列で [接続を終了] をクリックします。
- [接続を終了] ウィンドウで、[確認] をクリックします。
システムがクエリまたはトランザクションを正常に終了すると、成功メッセージが表示されます。システムは必要に応じて、ロールバックも実行します。