AlloyDB の高度な Query Insights 機能を使用してクエリのパフォーマンスを向上させる

このページでは、AlloyDB の高度なクエリ分析情報機能を使用して、プライマリ プール インスタンスと読み取りプール インスタンスの両方でクエリ パフォーマンスの問題をニア リアルタイムで検出して分析する方法について説明します。AlloyDB の高度なクエリ分析機能の概要については、AlloyDB の高度なクエリ分析機能の概要をご覧ください。

標準の Query Insights の使用方法については、Query Insights を使用してクエリのパフォーマンスを向上させるをご覧ください。

Gemini in Databases アシスタントを使用すると、AlloyDB リソースのモニタリングとトラブルシューティングを行うことができます。詳細については、Gemini アシスタンスによるモニタリングとトラブルシューティングをご覧ください。

始める前に

Query Insights ダッシュボードにアクセスするには、Google Cloud プロジェクトで AlloyDB for PostgreSQL へのアクセスを有効にする必要があります。

必要なロール

AlloyDB の高度なクエリ分析機能を使用するには、次の操作を行う権限が必要です。

  • AlloyDB の高度な Query Insights 機能にアクセスするには、AlloyDB Query Insights ダッシュボードにアクセスする権限が必要です。
  • AlloyDB の高度なクエリ分析機能の設定を編集するには、AlloyDB インスタンスを更新する権限が必要です。

これらの権限を取得するには、次のいずれかのロールを付与するよう管理者に依頼してください。

  • 基本ビューア(roles/viewer
  • データベース分析情報閲覧者(roles/databaseinsights.viewer

ロールの付与の詳細については、アクセスの管理をご覧ください。

AlloyDB の高度な Query Insights 機能を有効にする

AlloyDB インスタンスの高度な Query Insights 構成を有効にするには、次の操作を行います。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. [有効にする] または [設定を編集] をクリックします。

  5. [クエリ分析情報の設定を編集] タブで、[AlloyDB の高度なクエリ分析情報機能を有効にする] チェックボックスをオンにします。

    これにより、デフォルトで次の構成変更が行われます。

    • [待機イベント分析] チェックボックスと [アクティブ クエリ分析] チェックボックスをオンにします。
    • クエリの長さを 4,500 バイトから 100,000 バイトに増やします。
    • 最大サンプリング レートを 1 分あたり 20 件から 200 件のクエリプラン サンプルに増やしました。
  6. 変更を保存します。これにより、AlloyDB for PostgreSQL インスタンスが再起動されます。

gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-enabled

次のように置き換えます。

  • INSTANCE: 更新するインスタンスの ID。
  • CLUSTER: インスタンスのクラスタの ID。
  • PROJECT: クラスタのプロジェクトの ID。
  • REGION: クラスタのリージョン(us-central1 など)。

--observability-config-enabled フラグを使用すると、AlloyDB インスタンスのデータの収集と分析が可能になり、パフォーマンスと健全性をモニタリングできます。高度なクエリ分析情報を無効にするには、--no-observability-config-enabled を使用します。

Terraform を使用して AlloyDB インスタンスで高度なクエリ分析情報を有効にするには、observability_config ブロックで enabled フィールドを true に設定します。

次に例を示します。

  observability_config {
    enabled = true
  ...
  }
  

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

この例では、AlloyDB インスタンスで高度な Query Insights を有効にします。この呼び出しのパラメータの一覧については、メソッド: projects.locations.clusters.instances.patch をご覧ください。高度な Query Insights の設定の詳細については、高度な Query Insights の設定を編集するをご覧ください。

リクエスト データを使用する前に、次のように置き換えます。

  • CLUSTER_ID: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。
  • PROJECT_ID: クラスタを配置するプロジェクトの ID。
  • LOCATION_ID: クラスタのリージョンの ID。
  • INSTANCE_ID: 作成するプライマリ インスタンスの名前。

インスタンス構成を有効にするには、次の PATCH リクエストを使用します。

PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled}

updateMask=observabilityConfig.enabled クエリ パラメータは、observabilityConfig ブロック内の enabled フィールドを更新するよう API に指示します。

リクエストの JSON 本文は次のようになります。

{
 "observabilityConfig": {
   "enabled" : true,
 }
}

高度な Query Insights を有効にしたら、高度な Query Insights の設定を編集できます。

高度な機能の設定を編集する

AlloyDB インスタンスの高度なクエリ分析情報の構成を編集する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. [設定を編集] をクリックして、次のいずれかの設定を変更します。

    • 待機イベントの分析 待機イベントの分析は、データベースのパフォーマンスの問題を特定して解決する際に役立ちます。待機イベントは、クエリ関連のオペレーションの処理に遅延を引き起こすコンポーネントです。
    • アクティブ クエリ分析 アクティブに実行されているクエリを追跡します。
    • クエリコメントを保存するクエリの長さの一部として、調査するクエリに関連するコメントを表示して、クエリのコンテキストをご確認ください。追加のメモリは必要ありません。コメントに機密情報が含まれる場合は、ユーザーのアクセス権に注意してください。
    • インデックス アドバイザーを有効にする クラスタの Query Insights ページに、インデックス作成の推奨事項が表示されます。
    • [実行頻度を選択] フィールドで、推奨事項の更新頻度を定義できます。
    • クライアント IP アドレスを保存する 有効にすると、クライアント IP アドレスを追跡してデータを分析できます。
    • アプリケーション タグを保存する 有効にすると、リクエストを行っている API とモデル ビュー コントローラ(MVC)のルートを確認し、そのデータをグループ化して、そのデータに対して指標を実行できます。
    • クエリプラン サンプリング クエリプランは、クエリのサンプルを完了するために使用されるオペレーションを可視化します。データベースでキャプチャできる 1 分あたりのクエリサンプルの数は、サンプリング レートで決まります。レートが高いほど、必要なメモリが多くなります。
    • [クエリの長さ] フィールドで、クエリの長さのデフォルト制限を 256 バイトから 100 KB に変更できます。クエリが長いほど、必要なメモリが増えます。クエリ長を変更するには、インスタンスを再起動する必要があります。
  5. 変更を保存します。

gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-preserve-comments \
--observability-config-track-wait-events \
--observability-config-max-query-string-length=QUERY_LENGTH \
--observability-config-record-application-tags \
--observability-config-query-plans-per-minute=QUERY_PLANS \
--observability-config-track-active-queries

次のように置き換えます。

  • INSTANCE: 更新するインスタンスの ID。
  • CLUSTER: インスタンスのクラスタの ID。
  • PROJECT: クラスタのプロジェクトの ID。
  • REGION: クラスタのリージョン(us-central1 など)。
  • QUERY_LENGTH: クエリの長さ(1,024 ~ 100,000 バイト)。デフォルトのクエリ長は 10,240 バイトです。分析クエリの場合はより長いほうが便利ですが、必要なメモリ量が増えます。クエリ長を変更するには、インスタンスを再起動する必要があります。長さの上限を超えるクエリにもタグを追加できます。
  • QUERY_PLANS: 1 分あたりに構成するクエリプランの数。デフォルトでは、インスタンス上のすべてのデータベースで、実行されるクエリプランのサンプルが 1 分間に最大 20 個キャプチャされます。この値を 1 ~ 20 の範囲で変更します。サンプリングを無効にするには、0 を入力します。サンプリング レートを上げると、通常は得られるデータポイントの数が増えますが、パフォーマンスに悪影響を及ぼす可能性があります。

必要に応じて、次のオプションの可観測性フラグを使用します。

  • --observability-config-track-active-queries: アクティブなクエリのトラッキングを有効にします。この機能を無効にするには、--no-observability-config-track-active-queries を使用します。
  • --observability-config-record-application-tags: リクエストを行っている API とモデル ビュー コントローラ(MVC)のルート決定や、指標を実行するためのデータのグループ化に役立つアプリケーション タグを保存します。このオプションでは、特定のタグセットを使用してクエリにコメントする必要があります。アプリケーション タグを保存しない場合は、--no-observability-config-record-application-tags を使用します。
  • --observability-config-preserve-comments: SQL コードに追加されたアノテーションを保持し、実行に影響を与えることなくコードに関する情報を提供します。アノテーションを保持しない場合は、--no-observability-config-preserve-comments を使用します。
  • --observability-config-track-wait-events: 各待機イベントタイプのイベントの待機を有効にします。待機イベントをトラッキングしない場合は、--no-observability-config-track-wait-events を使用します。

Terraform を使用して AlloyDB インスタンスで高度なクエリ分析情報を構成するには、google_alloydb_instance リソースを使用します。

次に例を示します。

  observability_config {
    enabled = ENABLED_VALUE
    preserve_comments = PRESERVE_COMMENTS_VALUE
    track_wait_events = TRACK_WAIT_EVENTS_VALUE
    max_query_string_length = MAX_QUERY_STRING_LENGTH_VALUE
    record_application_tags = RECORD_APPLICATION_TAGS_VALUE
    query_plans_per_minute = QUERY_PLANS_PER_MINUTE_VALUE
    track_active_queries = TRACK_ACTIVE_QUERIES_VALUE
  }
  

次のように置き換えます。

  • ENABLED_VALUE: インスタンスのオブザーバビリティ機能のステータス。設定を編集するときに true に設定し、必要に応じて他のフラグを指定します。
  • PRESERVE_COMMENTS_VALUE: クエリ文字列内のコメントを保持します。デフォルト値は false です。
  • TRACK_WAIT_EVENTS_VALUE: インスタンスのクエリ実行中に待機イベントを記録します。デフォルト値は true です。
  • MAX_QUERY_STRING_LENGTH_VALUE: クエリ文字列の長さ。デフォルト値は 10240 です。1024 ~ 100,000 の整数を指定できます。
  • RECORD_APPLICATION_TAGS_VALUE: インスタンスのアプリケーション タグを記録します。デフォルト値は true です。
  • QUERY_PLANS_PER_MINUTE_VALUE: すべてのクエリを合計した 1 分あたりのインサイトによってキャプチャされたクエリ実行プランの数。デフォルト値は 20 です。0 ~ 20 の整数を指定できます。
  • TRACK_ACTIVE_QUERIES_VALUE: アクティブに実行されているクエリを追跡します。デフォルト値は false です。

    Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

この例では、AlloyDB インスタンスで高度な Query Insights 設定を構成します。この呼び出しのパラメータの一覧については、メソッド: projects.locations.clusters.instances.patch をご覧ください。

高度なクエリ分析情報の設定を構成するには、enabled フィールドを true に設定し、必要に応じて他のオプション フィールドを変更します。この呼び出しのフィールドの一覧については、ObservabilityInstanceConfig をご覧ください。

リクエスト データを使用する前に、次のように置き換えます。

  • CLUSTER_ID: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。
  • PROJECT_ID: クラスタを配置するプロジェクトの ID。
  • LOCATION_ID: クラスタのリージョンの ID。
  • INSTANCE_ID: 作成するプライマリ インスタンスの名前。

インスタンス構成を変更するには、次の PATCH リクエストを使用します。

PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled,observabilityConfig.preserveComments,observabilityConfig.trackWaitEvents,observabilityConfig.maxQueryStringLength,observabilityConfig.recordApplicationTags,observabilityConfig.queryPlansPerMinute,observabilityConfig.trackActiveQueries,observabilityConfig.trackClientAddress}

すべての高度なクエリ分析情報フィールドを構成するリクエストの JSON 本文は次のとおりです。

{
 "observabilityConfig": {
   "enabled" : true,
   "preserveComments": true,
   "trackWaitEvents": true,
   "maxQueryStringLength": 5000,
   "recordApplicationTags": true,
   "queryPlansPerMinute": 100,
   "trackActiveQueries": true,
 }
}

クエリ パフォーマンスの問題を検出して診断する

高度なクエリ分析情報を使用して、パフォーマンスの問題を検出して診断できます。Query Insights ダッシュボードには、データベースの負荷が表示されます。これは、選択したデータベースで実行されたクエリの作業量の経時的な測定結果(CPU 秒単位)です。実行中の各クエリは、リソースを使用または待機しています。データベースの負荷は、指定された時間枠内で完了したすべてのクエリで要した時間の比率です。

実行されたクエリによって行われた作業の測定値を表示する

データベースの負荷グラフは、データベースで実行されたすべてのクエリによって行われた作業量の測定値(CPU 秒単位)を、選択したディメンションでスライス化します。データベースの負荷は、グラフのプルダウンから選択した分散データに分割されます。

データベースの負荷は、次のいずれかのディメンションで分類できます。

  • クエリ
  • 待機イベントタイプ
  • 待機イベント
  • データベース
  • ユーザー

データベースで実行されたクエリによって完了した作業を表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. データを表示する実行時間の合計を選択します(1 時間、6 時間、カスタム時間など)。

  6. [Database Load by execution time] プルダウンで、調査するディメンションを選択します。選択したディメンションに応じて、選択したディメンションがデータベースの全体的な負荷にどのように貢献しているかがグラフに表示されます。たとえば、データベース負荷グラフのプルダウンから [Wait events] ディメンションを選択すると、選択したデータベースとユーザーの選択した期間に発生したすべての待機イベントの内訳がデータベース負荷グラフに表示されます。

    データベース負荷グラフには、9 つの待機イベントタイプと PostgreSQL でサポートされている待機イベントのすべてのデータが表示されます。待機イベントの数とタイプに応じて、寄与度の高い待機イベントとタイプの上位 10 件が表示されます。待機イベントが 10 件を超える場合は、上位 9 件の待機イベントが表示され、残りは [その他] カテゴリにグループ化されます。このアプローチは、クエリ、データベース、ユーザーなどの他のディメンションにも適用されます。

データベースの負荷に最も貢献している項目を表示する

[データベースの負荷別の上位項目] テーブルを使用すると、[データベースの負荷] グラフで選択した期間と項目について、データベースの負荷に最も大きく影響している上位項目を確認できます。[データベースの負荷別の上位項目] テーブルで選択したディメンションに応じて、選択した期間の上位の値を確認できます。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. データを表示する実行時間の合計を選択します(1 時間、6 時間、またはカスタム時間など)。

  6. [データベースの負荷別の上位項目] テーブルで、次のいずれかをクリックします。

    ディメンション 説明
    クエリ このテーブルには、合計実行時間で並べ替えられた上位の正規化されたクエリが表示されます。クエリごとに、列に表示されるデータは次のように一覧表示されます。
    • 平均実行時間(ミリ秒)。クエリの平均実行時間です。
    • 合計実行時間(ミリ秒)。特定のクエリでかかった合計実行時間。
    • 返された行数。クエリに対して取得された行数の平均。
    • 呼び出された回数。アプリケーションによってクエリが呼び出された回数。
    • グラフのディメンション別の負荷の割合(%)。ピルグラフは、特定のクエリに対してグラフのディメンションがどのように分散されているかを示します。
    待機イベントのタイプ テーブルには、選択した期間中に発生した上位の待機イベントタイプのリストが表示されます。
    • 平均待機時間(ミリ秒)。特定の待機イベントタイプでクエリが費やした平均時間。
    • 合計待機時間(ミリ秒)。特定の待機イベントタイプでクエリが費やした合計実行時間。
    • 待機イベントのタイプ数。選択した期間に特定の待機イベントタイプが発生した回数。
    • グラフのディメンション別の負荷の割合(%)。ピルグラフは、データベース負荷グラフのプルダウンで選択したグラフのディメンションが特定の待機イベントタイプにどのように分散されているかを示します。
    待機イベント 表には、選択した期間中に発生した上位の待機イベントのリストが表示されます。
    • 平均待機時間(ミリ秒)。特定の待機イベントでクエリが費やした平均時間。
    • 合計待機時間(ミリ秒)。特定の待機イベントでクエリが費やした合計実行時間。
    • 待機イベント数。選択した期間に特定の待機イベントが発生した回数。
    • グラフのディメンション別の負荷の割合(%)。ピルグラフは、データベース負荷グラフのプルダウンで選択したグラフのディメンションが特定の待機イベントにどのように分散されているかを示します。
    データベース この表には、選択した期間中に実行されたすべてのクエリで負荷に貢献した上位のデータベースのリストが表示されます。
    • データベースでの平均時間(ミリ秒)。特定のデータベースでクエリが費やした平均時間。
    • データベースでの合計時間(ミリ秒)。特定のデータベースでクエリが費やした合計実行時間。
    • グラフのディメンション別の負荷の割合(%)。ピルグラフは、データベースの負荷グラフのプルダウンで選択したグラフのディメンションが特定のデータベースにどのように分散されているかを示します。
    ユーザー この表には、選択した期間中に実行されたすべてのクエリの上位ユーザーのリストが表示されます。
    • ユーザーでの平均時間(ミリ秒)。特定のユーザーに対してクエリが費やした平均時間。
    • ユーザーで費やされた合計時間(ミリ秒)。特定のユーザーでクエリが費やした合計実行時間。
    • グラフのディメンション別の負荷の割合(%)。ピルグラフは、データベース負荷グラフのプルダウンで選択したグラフのディメンションが特定のユーザーにどのように分散されているかを示します。

クエリの実行時間を表示する

AlloyDB の高度な Query Insights 機能では、[データベースの負荷別の上位項目] テーブルに、データベースの負荷に貢献している上位 10 個のクエリが表示されます。上位のクエリは、選択した期間のデータベース負荷に最も大きく貢献したクエリです。後続のクエリは、最も長い実行時間の割合です。

[データベースの負荷別の上位項目] のパラメータの実行時間が、選択したグラフのディメンション(クエリ、待機イベントの種類、待機イベント、データベース、ユーザー)の値によってどのように影響を受けるかを確認する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. [データベースの負荷別の上位項目] テーブルで [グラフのディメンション別の負荷率] を表示して、テーブル内のパラメータが [データベースの負荷] グラフのパラメータにどのように影響しているかを確認します。

    たとえば、[データベースの負荷] グラフで [すべてのクエリ] を選択し、[データベースの負荷別の上位項目] テーブルの [クエリ] タブをクリックすると、[クエリ別の負荷率] に、選択したデータベースで特定の期間に最もデータベースの負荷を増加させたクエリのリストが表示されます。

クエリ実行時間の詳細を表示する

クエリの実行時間の詳細は [詳細] で確認できます。データベースの負荷グラフと表で選択したディメンション、各待機イベントの定義、[その他] カテゴリにカプセル化されたデータなどが表示されます。

[詳細] には、クエリの詳細画面の他の場所には表示されない複雑な情報の詳細も表示されます。この情報には、各待機イベントの定義が含まれます。

クエリの実行時間の詳細を表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. [データベースの負荷別の上位項目] テーブルで、クエリの [詳細] をクリックします。

AlloyDB の高度な Query Insights 機能では、正規化されたクエリ($1、$2 など)が表示され、リテラル定数値が置き換えられます。次に例を示します。

UPDATE
  "demo_customer"
SET
  "customer_id" = $1::uuid,
  "name" = $2,
  "address" = $3,
  "rating" = $4,
  "balance" = $5,
  "current_city" = $6,
  "current_location" = $7
WHERE
  "demo_customer"."id" = $8

この定数値は無視されるため、高度なクエリ分析情報は類似したクエリを集計し、定数で表示される可能性のある個人情報(PII)情報を削除できます。

正規化されたクエリのデータベース負荷を特定する

選択した正規化クエリが選択したデータベースで時間の経過に伴って実行したクエリ実行時間とリソース使用量の測定値(CPU 秒数)を表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. [データベースの負荷] グラフで [クエリ] をクリックします。データベースの負荷を計算するために、データベースの負荷グラフでは、1 分間隔で完了した正規化クエリで要した時間と経過した実時間の比率を使用します。

[データベースの負荷] グラフの上部に、正規化されたクエリの最初の 10 KB 文字が表示されます。集計と個人情報(PII)の理由から、リテラルは削除されています。

これらの各状態で費やされた時間の分布を特定できるように、AlloyDB の高度なクエリ分析機能は、正規化されたクエリの読み込みごとに待機イベントと待機イベントタイプに分散します。

クエリのレイテンシは、レイテンシ グラフを使用して確認できます。レイテンシとは、正規化されたクエリの実行に要した経過時間です。並列クエリのレイテンシは経過時間で測定されます。ただし、クエリの一部を実行する際に複数のコアが使用されることによって、クエリのデータベース負荷がより高い数値になる場合があります。

パーセンタイルでフィルタして 50、95、99 パーセンタイルを表示し、想定される実行時間に準拠していないクエリを検出できます。正規化されたクエリの過去のレイテンシを分析するには、時間枠を変更します。

正規化されたクエリを分析する

クエリプランは、クエリのサンプルにあるさまざまなオペレーションの内訳を提供することで、正規化されたクエリの理解と分析に役立ちます。

サンプル クエリプランは、正規化されたクエリに関連するクエリプラン サンプルの EXPLAIN ANALYZE ビューを表示しています。これらは実行されたクエリプランであり、クエリプラン内の各オペレーションにかかったアクティブ時間の内訳を提供します。

サンプルのクエリプランを表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. データを表示する実行時間の合計を選択します(1 時間、6 時間、カスタム時間など)。

  6. [データベースの負荷別の上位項目] テーブルで、クエリをクリックします。

  7. [クエリプランのサンプル] で、グラフ上の任意のドットをクリックして、そのクエリのクエリプランを表示します。

タグを使用してアプリケーションのパフォーマンスをモニタリングし、トラブルシューティングする

高度なクエリ分析情報は、アプリケーション中心のモニタリングを提供し、オブジェクト リレーショナル マッピング(ORM)で構築されたアプリケーションのパフォーマンス診断を簡素化します。クエリのタグ付けは、ビジネス ロジック、マイクロサービス、他のコンストラクトの使用など、より高レベルなコンストラクトで問題を見つけるために役立ちます。アプリケーションでタグを使用すると、次のことができます。

  • データベースのパフォーマンスをモニタリングする。
  • Sqlcommenter を使用して、アプリケーション コードが原因のパフォーマンスの問題を特定します。
  • データベースの負荷を分析します。
  • タグごとの負荷を表示します。

Query Insights でタグを使用する方法については、Query Insights を使用してクエリのパフォーマンスを向上させるをご覧ください。

データベース レイヤでアプリケーションのトラブルシューティングを行う

高度なクエリ分析情報では、コンテキストに応じたエンドツーエンドのトレースビューが表示されます。これにより、特定のリクエストのデータベース レイヤでアプリケーションの問題を把握できます。コンテキストに応じたエンドツーエンドのアプリケーション トレースを使用すると、モデル、ビュー、コントローラ、ルートなど、問題のあるクエリのソースを特定できます。

OpenTelemetry を有効にすると、スパン情報は SQL コメント内のタグ情報とともにデータベースに送信されます。アプリケーションから Cloud Logging に送信されたトレースは、データベース クエリプラン トレースにリンクされて、問題の原因を特定します。

コンテキスト内トレースを表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. クラスタとインスタンスのリストで、インスタンスをクリックします。

  3. [Query Insights] をクリックします。

  4. データベースとユーザーを選択します。

  5. [データベースの負荷別の上位項目] テーブルの任意のエントリをクリックします。

  6. [クエリ分析情報の詳細] ページで、[エンドツーエンド] をクリックします。

Cloud Trace を使用して、クエリプランの各ステップをエンドツー エンドでトレースして確認することもできます。Cloud Trace にアクセスするには、[オペレーション > トレース] を選択します。

よくある質問

このセクションでは、高度なクエリ分析情報の機能に関するよくある質問の回答を紹介します。

クエリ文字列が切り捨てられるのはなぜですか?

デフォルトでは、高度なクエリ分析情報ではクエリ文字列の 10 KB が表示されます。表示は 100 KB まで増やすことができます。

データベース負荷グラフの CPU 負荷が最大コアラインを超えているのはなぜですか?

CPU 負荷は、ランタイムと Linux スケジューラが実行中のサーバー プロセスをスケジュールするのを待機する時間の両方を考慮するため、CPU 負荷が最大コアラインを超える可能性があります。

標準のクエリ分析情報の指標を使用できますか?

はい。標準クエリ分析情報は、Stackdriver からアクセスできるカウンタを生成します。これらの指標は、Cloud Monitoring API と Metrics Explorer UI を使用して利用できます。詳細については、Google Cloud 指標をご覧ください。

クエリ文字列の最大長はどのくらいですか?

標準の Query Insights プラグインの場合、クエリ文字列の最大長は 4.5 KB 文字に制限されています。高度なクエリ分析情報の場合、デフォルトの文字列の長さは 10 KB で、最大長は 100 KB に制限されています。

セカンダリ クラスタで高度な Query Insights 機能を使用できますか?

セカンダリ インスタンスを含むクラスタでは、高度な Query Insights を有効にできません。クラスタにセカンダリ インスタンスを作成する前に、クラスタ内のすべてのインスタンスで高度な Query Insights を無効にする必要があります。

次のステップ