高度な Query Insights のリファレンス

ドキュメントのバージョンを選択してください。

このドキュメントでは、AlloyDB Omni の高度な Query Insights の構成パラメータ、テレメトリー ディメンション、オブザーバビリティ ビューと関数について説明します。

高度な Query Insights の有効化とクエリの詳細については、高度な Query Insights を使用してクエリのパフォーマンスをモニタリングするをご覧ください。

構成パラメータ

データベースの再起動を必要としないパラメータ変更を適用するには、ALTER SYSTEM SET を実行してから SELECT pg_reload_conf() を実行します。次の表は、高度な Query Insights の構成パラメータの説明です。

パラメータ タイプ デフォルト値 再起動が必要 説明
google_insights_v2.enabled boolean off shared_preload_libraries での最初の有効化の場合は「はい」。pg_reload_conf() を使用した後続の再読み込みの場合は No。 インスタンス全体で高度な Query Insights のテレメトリー収集を有効または無効にします。
google_insights_v2.qi_max_query_string_length integer 10240 いいえ(pg_reload_conf() で再読み込み) 正規化された SQL テンプレートに記録される最大バイト長(1024~102400)を設定します。ここで、リテラル値は $1 や $2 などの位置パラメータとしてマスクされます。
google_insights_v2.qi_preserve_comments boolean off いいえ(pg_reload_conf() で再読み込み) 正規化されたクエリ文字列内で SQL コメントを保持するかどうかを制御します。
google_insights_v2.qi_track_wait_event_types boolean on いいえ(pg_reload_conf() で再読み込み) CPU、IO、Lock、Timeout、IPC などの高レベルの wait_class ボトルネック カテゴリを記録します。
google_insights_v2.qi_track_wait_events boolean on いいえ(pg_reload_conf() で再読み込み) DataFileExtend、transactionid、WALWrite などの粒度の細かい PostgreSQL wait_event 名を記録します。
google_insights_v2.qi_track_client_address boolean off いいえ(pg_reload_conf() で再読み込み) 接続しているクライアント IP アドレスをクエリとクライアント アドレスの統計ビューに記録します。
google_insights_v2.qi_track_tag boolean off いいえ(pg_reload_conf() で再読み込み) SQL コメント内の SQLCommenter タグなどのタグの追跡を有効にします。
google_insights_v2.qi_track_active_queries boolean off いいえ(pg_reload_conf() で再読み込み) アクティブ クエリとオープン トランザクションのリアルタイム トラッキングを有効にします。

ディメンション別のオブザーバビリティ ビューと指標

以降のセクションでは、各テレメトリー ディメンションの google_insights_v2 スキーマで使用可能なオブザーバビリティ ビューと指標列を示します。

クエリ

クエリ ディメンションは、インスタンス全体のクエリの実行統計情報と正規化された SQL テキストを追跡します。正規化されたクエリテキストで SQL コメントを保持するには、google_insights_v2.qi_preserve_comments を on に設定します。

このディメンションで使用できるビューと列は次のとおりです。

  • オブザーバビリティ ビュー:
    • observability_service_query_view
    • observability_service_query_coarse_1_view
    • observability_service_query_coarse_2_view
  • 関連列:
    • query_id: 正規化された SQL クエリのハッシュ ID。
    • query: 正規化された SQL クエリテキスト。
    • database: クエリが実行された論理データベース。
    • username: クエリを実行したデータベース ロール。
    • total_execution_time: 累積実行時間(マイクロ秒単位)。
    • total_wait_time: 累積待機時間(マイクロ秒単位)。
    • total_read_time: 累積ディスク読み取り時間(マイクロ秒)。
    • total_write_time: ディスク書き込み時間の累積(マイクロ秒単位)。
    • total_rows: クエリによって返された行または影響を受けた行の合計数。
    • total_shared_blocks_hit: 共有バッファのヒットの合計数。
    • total_shared_blocks_read: ディスクから読み取られた共有ブロックの合計数。
    • count: クエリが実行された合計回数。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。

待機イベントのタイプ

待機イベントのタイプのディメンションは、google_insights_v2.qi_track_wait_event_types が on に設定されている場合(デフォルトで有効)、wait_class ボトルネックのカテゴリを記録します。

このディメンションで使用できるビューと列は次のとおりです。

  • オブザーバビリティ ビュー:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 関連列:
    • wait_class: 待機イベントのカテゴリ(IO、Lock、LWLock、CPU、Internal wait event など)。
    • wait_event: 待機クラス内の詳細な PostgreSQL 待機イベント名。
    • time_spent: 待機イベントタイプの累積待機時間(マイクロ秒)。
    • count: 待機イベント タイプが発生した合計回数。
    • database: 待機イベントが発生した論理データベース。
    • username: 待機イベントに関連付けられたデータベース ロール。
    • tag_id: 関連付けられた SQLCommenter タグセットの数値識別子。
    • tag_string: アプリケーション タグを含む未加工の SQL コメント文字列。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。
    • query_id: クエリのハッシュ ID(observability_service_wait_event_stats_by_query_view 内)。

待機イベント

待機イベント ディメンションは、google_insights_v2.qi_track_wait_events が on に設定されている場合(デフォルトで有効)、詳細な PostgreSQL wait_event 名を記録します。

このディメンションで使用できるビューと列は次のとおりです。

  • オブザーバビリティ ビュー:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 関連する列:
    • wait_event: 特定の PostgreSQL 待機イベント名(DataFileExtend、DataFileRead、WALWrite、Internal wait event など)。
    • wait_class: 待機イベントが属する待機イベントのカテゴリ。
    • time_spent: 待機イベントの累積待機時間(マイクロ秒単位)。
    • count: 待機イベントが発生した合計回数。
    • database: 待機イベントが発生した論理データベース。
    • username: 待機イベントに関連付けられたデータベース ロール。
    • tag_id: 関連付けられた SQLCommenter タグセットの数値識別子。
    • tag_string: アプリケーション タグを含む未加工の SQL コメント文字列。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。
    • query_id: クエリのハッシュ ID(observability_service_wait_event_stats_by_query_view 内)。

データベース

データベース ディメンションは、google_insights_v2.enabled が on に設定されている場合に、論理データベースあたりのリソース消費量とクエリ量を追跡します。

このディメンションで使用できるビューと列は次のとおりです。

  • オブザーバビリティ ビュー:
    • observability_service_db_load_conn_view
    • observability_service_query_view
    • observability_service_wait_event_no_query_view
  • 関連列:
    • database: 論理データベース名。
    • username: データベースでクエリを実行したデータベース ロール。
    • total_execution_time: データベースでの累積クエリ実行時間(マイクロ秒単位)。
    • total_wait_time: データベースでの累積待機時間(マイクロ秒単位)。
    • count: データベース内のクエリ実行の合計数。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。

ユーザーとクライアントの IP アドレス

ユーザーとクライアント IP アドレスのディメンションは、デフォルトでデータベース ロール(username)ごとに負荷を追跡します。接続しているクライアント IP アドレス(client_address)も収集するには、google_insights_v2.qi_track_client_address を on に設定する必要があります(デフォルトは off)。

このディメンションでは、次のビューと列を使用できます。

  • オブザーバビリティ ビュー:
    • observability_service_query_view
    • observability_service_client_address_stats_by_query_view
  • 関連列:
    • client_address: 接続しているクライアントの IP アドレス(google_insights_v2.qi_track_client_address が on の場合)。
    • username: データベース ロール名。
    • database: 論理データベース名。
    • query_id: 正規化された SQL クエリのハッシュ ID。
    • time_spent: クライアント アドレスの累積クエリ実行時間(マイクロ秒)。
    • count: ユーザーまたはクライアント IP アドレスのクエリ実行の合計数。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。

タグ

タグ ディメンションは、アプリケーション タグのメタデータごとにクエリ実行の統計情報を追跡します。タグ指標を収集するには、google_insights_v2.qi_track_tag を on に設定する必要があります(デフォルトは off)。off に設定すると、これらのビューは行を返しません。

このディメンションでは、次のビューと列を使用できます。

  • オブザーバビリティ ビュー:
    • observability_service_db_load_tag_view
    • observability_service_tag_view
  • 関連列:
    • tag_id: アプリケーション タグの組み合わせの数値 ID。
    • tag_string: アプリケーション タグを含む未加工の SQL コメント文字列。
    • application: SQLCommenter タグから抽出されたアプリケーション名。
    • db_driver: SQLCommenter タグから抽出されたデータベース ドライバ。
    • framework_name: SQLCommenter タグから抽出されたアプリケーション フレームワーク名。
    • framework_controller: SQLCommenter タグから抽出されたフレームワーク コントローラ。
    • framework_action: SQLCommenter タグから抽出されたフレームワーク アクション。
    • framework_route: SQLCommenter タグから抽出されたフレームワーク ルート。
    • traceparent: SQLCommenter タグから抽出された W3C トレース コンテキスト。
    • database: タグ付きクエリが実行された論理データベース名。
    • username: タグ付きクエリを実行したデータベース ロール。
    • total_execution_time: タグの組み合わせの累積クエリ実行時間(マイクロ秒単位)。
    • count: タグの組み合わせのクエリ実行の合計数。
    • recorded_on: テレメトリー間隔が記録されたときのタイムスタンプ。

アクティブなクエリ

アクティブ クエリ ディメンションは、実行中のクエリとオープン トランザクションをリアルタイムで追跡します。アクティブ セッションをクエリするには、google_insights_v2.qi_track_active_queries を on に設定する必要があります。off に設定すると、これらのビューに対してクエリを実行するとエラーが返されます。

このディメンションで使用できるビューと列は次のとおりです。

  • オブザーバビリティ ビュー:
    • stat_activity
    • stat_activity_v3
  • 関連する列:
    • pid: バックエンド プロセス ID。セッションを終了するには、プロセス ID を PostgreSQL の pg_terminate_backend(pid) システム関数に渡します。
    • normalized_query_hash: 正規化された SQL クエリのハッシュ ID。
    • normalized_query: アクティブなクエリの正規化された SQL テキスト。
    • state: 現在のバックエンドの状態(active や idle in transaction など)。
    • backend_start: 現在のセッションが開始されたときのタイムスタンプ。セッション継続時間を秒単位で計算するには、EXTRACT(EPOCH FROM (clock_timestamp() - backend_start)) を計算します。
    • xact_start: 現在のトランザクションが開始されたときのタイムスタンプ。トランザクションの実行時間を秒単位で計算するには、EXTRACT(EPOCH FROM (clock_timestamp() - xact_start)) を計算します。
    • query_start: 現在のクエリが開始されたときのタイムスタンプ。クエリの所要時間を秒単位で計算するには、EXTRACT(EPOCH FROM (clock_timestamp() - query_start)) を計算します。
    • wait_event_type: バックエンドが待機している場合の待機イベント カテゴリ。
    • wait_event: バックエンドが待機している場合の待機イベント名。
    • database: アクティブなセッションの論理データベース名。
    • username: アクティブ セッションのデータベース ロール名。
    • application_name: 接続するアプリケーションの名前。
    • client_addr: 接続しているクライアントの IP アドレス。