本文說明 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_viewobservability_service_query_coarse_1_viewobservability_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_viewobservability_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_viewobservability_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_viewobservability_service_query_viewobservability_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_viewobservability_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_viewobservability_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_activitystat_activity_v3
- 相關資料欄:
pid:後端程序 ID。如要終止工作階段,請將程序 ID 傳遞至 PostgreSQLpg_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 位址。