本文為您介紹在使用Hologres的Serverless Computing功能時,如何通過特定方式進行監控與營運,以確保服務的穩定與高效運行。
查看監控指標
登入Hologres管理主控台,查看執行個體Serverless Query最長運行時間長度、Serverless Computing Query排隊數量、Serverless Computing資源Quota使用率的監控指標。如有需要,可進一步配置監控警示,詳見CloudMonitor。
查看任務狀態
查看Serverless Computing資源中正在啟動並執行SQL任務。
SELECT *, (running_info::json) ->> 'computing_resource' AS computing_resource, (running_info::json) ->> 'current_stage' AS current_stage FROM hg_stat_activity WHERE (running_info::json) ->> 'computing_resource' = 'Serverless' AND (running_info::json) -> 'current_stage'->>'stage_name' = 'EXECUTE'查看Serverless Computing資源中排隊的SQL任務。
SELECT *, (running_info::json) ->> 'computing_resource' AS computing_resource, (running_info::json) ->> 'current_stage' AS current_stage FROM hg_stat_activity WHERE (running_info::json) ->> 'computing_resource' = 'Serverless' AND (running_info::json) -> 'current_stage'->>'stage_name' = 'QUEUE'查看Serverless Computing資源中SQL任務的運行狀態。
SELECT *, (running_info::json) ->> 'computing_resource' AS computing_resource, (running_info::json) ->> 'current_stage' AS current_stage FROM hg_stat_activity WHERE query_id = '<query_id>';
查詢歷史任務
hologres.hg_query_log和hologres.hg_serverless_computing_query_log均保留一個月的資料。
Hologres自V2.1.18版本起,支援hologres.hg_serverless_computing_query_log視圖,可以直接查看在Serverless Computing資源中執行的歷史任務。
相比慢Query日誌,增加以下欄位:
queue_time_ms:Serverless Computing資源中SQL等待排隊時間長度,單位毫秒(ms)。
serverless_allocated_cores:Serverless Computing資源實際分配給當前SQL的CU數。
serverless_allocated_workers:Serverless Computing資源實際分配給當前SQL的Worker數。
serverless_resource_used_time_ms:當前SQL實際佔用Serverless Computing資源的時間長度,單位毫秒(ms)。
在extended_info欄位中,額外記錄以下資訊:
serverless_computing_source:Query來源,含以下值:
user_submit:使用者自行指定使用Serverless資源執行的Query。
query_queue:通過指定查詢隊列的Query全部由Serverless資源執行的Query,詳情請參見使用Serverless Computing資源執行查詢隊列的查詢。
big_query_isolation_service:通過自適應Serverless功能而使用Serverless資源啟動並執行Query,詳情請參見自適應Serverless計算。
query_queue_rerun:通過Query Queue的大查詢控制功能,自動使用Serverless資源重啟動並執行Query,詳情請參見大查詢控制。
query_id_of_triggered_rerun:僅serverless_computing_source為query_queue_rerun時有該欄位,表示重運行Query的原始Query ID。
Hologres自V2.2.7版本前,hologres.hg_serverless_computing_query_log視圖僅支援查看執行時間長度大於100 ms的成功Query和全部失敗Query。Hologres自V2.2.7版本起,支援查看全部Serverless Computing Query。
SELECT
*
FROM
hologres.hg_serverless_computing_query_log;針對部分特殊任務,如COPY、CTAS、INSERT OVERWRITE等,在慢Query日誌中會產生多條記錄,包括任務SQL本身及其執行過程中產生的INSERT記錄,其中的INSERT會實際使用Serverless資源執行。可以通過任務SQL本身的trans_id欄位關聯到INSERT記錄,關聯樣本如下。
SELECT
query_id,
query,
extended_info
FROM
hologres.hg_query_log
WHERE
extended_info ->> 'source_trx' = '<transaction_id>' -- 通過COPY/CTAS/RESHARDING等本身記錄的trans_id欄位可以取到transaction_id
-- extended_info ->> 'src_query_id' = 'query_id' -- 預存程序不是一個事務,因此需要通過query_id欄位關聯
-- query like '%<transaction_id>%' -- RESHARDING任務無法通過extended_info欄位關聯,需要通過query欄位
ORDER BY
query_start
;查看資源佔用
查看Serverless Computing資源中正在啟動並執行SQL任務佔用的總資源。
SELECT
datname::text as db_name,
(running_info::json) -> 'current_stage' ->> 'stage_name' AS current_stage,
SUM(((running_info::json) -> 'current_stage' ->> 'serverless_allocated_cores')::int) AS total_computing_resource,
count(1) as query_qty
FROM
hg_stat_activity
WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
GROUP BY
1,
2;返回結果中,列含義介紹:
db_name:資料庫名稱。
current_stage:執行階段,例如EXECUTE(執行中)、QUEUE(排隊中)等。
total_computing_resource:當前DB和執行階段下,總的使用的Serverless Computing的資源。
query_qty:SQL數量。