進階查詢洞察參考資料

選取文件版本:

本文說明 AlloyDB Omni 進階查詢洞察功能的設定參數、遙測維度和可觀測性檢視畫面與函式。

如要進一步瞭解如何啟用及查詢進階查詢洞察,請參閱「使用進階查詢洞察監控查詢效能」。

設定參數

如要套用不需要重新啟動資料庫的參數變更,請執行 ALTER SYSTEM SET,然後執行 SELECT pg_reload_conf()。下表說明進階查詢洞察的設定參數:

參數 類型 預設值 需要重新啟動 說明
google_insights_v2.enabled boolean off 可以,但必須先使用 shared_preload_libraries 啟用。如果後續使用 pg_reload_conf() 重新載入,則為「No」。 啟用或停用整個執行個體的進階查詢洞察遙測資料收集功能。
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() 重新載入) 記錄高階 wait_class 瓶頸類別,例如 CPU、IO、Lock、Timeout 和 IPC。
google_insights_v2.qi_track_wait_events boolean on 否 (使用 pg_reload_conf() 重新載入) 記錄細微的 PostgreSQL wait_event 名稱,例如 DataFileExtend、transactionid 和 WALWrite。
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 標記組合的數字 ID。
    • 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 標記組合的數字 ID。
    • 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 位址。