Hologres的Serverless Computing功能是按照大SQL作業(例如CPU或記憶體開銷大的SQL作業)實際消耗的Serverless Computing計算資源和使用時間長度進行計費,本文為您介紹如何查看Serverless Computing計算資源的消耗量以及計費詳情。
計費說明
Serverless Computing功能,針對每個SQL作業,按照使用的CU*H(實際使用的資源量 * 資源使用時間長度)統計資源用量。按小時結算,即每小時匯總上一小時使用Serverless Computing執行的SQL作業用量,計費(結算)一次。具體資源單價請參見計費說明。
-
Serverless Computing已於北京時間
2024年07月01日起正式收費,請參考下文,關注您的Serverless Computing資源消耗量,並估算賬單。如有需要,請進一步調整作業的資源分派,避免產生預期外的費用。 -
目前Serverless Computing支援的地區及可用性區域請參見Serverless Computing使用指南。
-
hologres.hg_query_log和hologres.hg_serverless_computing_query_log均保留近30天的資料。
僅執行成功的SQL作業計費,執行失敗不計費。
查詢資源消耗量
自Hologres V2.1.18版本起,可以通過查詢hologres.hg_serverless_computing_query_log視圖計算Serverless Computing任務的資源消耗量,並根據Serverless資源的計費公式,估算費用。關於慢Query日誌詳情,請參見慢Query日誌查看與分析。
-
在
Hologres V2.2.7版本之前,慢Query日誌只記錄執行時間長度超過100毫秒的Serverless Computing成功任務以及所有失敗任務。而在Hologres V2.2.7及以上版本,支援查看所有Serverless Computing任務。 -
慢Query日誌記錄的是每條SQL的資源消耗資料,在賬單產生的過程中,可能需要進行資料彙總、單位換算等處理,因此可能會有少量差異。
許可權說明
根據慢Query日誌估算Serverless Computing的消耗資源量與賬單需要有一定的許可權,其許可權規則和授權方式說明如下。
-
查詢執行個體所有DB的資料掃描量
-
方式一:需要授予Superuser許可權,授權命令如下:
--將“雲帳號ID”替換為實際使用者名稱。如果是RAM使用者,帳號ID前需要添加“p4_”。 ALTER USER "雲帳號ID" SUPERUSER; -
方式二:將使用者添加到pg_read_all_stats使用者組,授權命令如下:
說明除了Superuser許可權,Hologres還支援pg_read_all_stats使用者組查看所有DB的資料掃描量。如果普通使用者需要查看全部日誌,可聯絡Superuser進行授權並加入該使用者組。
GRANT pg_read_all_stats TO "雲帳號ID";--專家許可權模型授權 CALL spm_grant('pg_read_all_stats', '雲帳號ID'); -- SPM許可權模型 CALL slpm_grant('pg_read_all_stats', '雲帳號ID'); -- SLPM許可權模型
-
-
查看當前DB的資料掃描量
-
開啟簡單許可權模型(SPM)或基於Schema層級的簡單許可權模型(SLPM),並將使用者加入db_admin使用者組,db_admin角色可以查看當前DB的資料掃描量,授權命令如下:
CALL spm_grant('<db_name>_admin', '雲帳號ID'); -- SPM許可權模型 CALL slpm_grant('<db_name>.admin', '雲帳號ID'); -- SLPM許可權模型 -
普通使用者支援查詢當前帳號對應DB下自己執行的資料掃描量。
-
更多許可權操作請參見許可權管理概述。
查詢單條SQL的資源消耗量
您可以使用如下SQL命令查詢Serverless Computing任務的資源消耗量明細。
SELECT
*,
queue_time_ms, -- Serverless Computing資源中SQL等待排隊時間長度,單位毫秒(ms)
serverless_allocated_cores, -- Serverless Computing資源實際分配給當前SQL的CU數。
serverless_resource_used_time_ms, -- SQL實際佔用Serverless Computing資源的時間長度,單位毫秒(ms)
(serverless_allocated_cores::DECIMAL(38, 4)) * (serverless_resource_used_time_ms::DECIMAL(38, 4)) AS serverless_cums
FROM
hologres.hg_serverless_computing_query_log;
查詢指定時間內的資源消耗量
您可以使用如下SQL命令查詢指定時間內Serverless Computing執行成功的任務資源消耗量。
SELECT
(SUM((serverless_allocated_cores::DECIMAL(38, 4)) * (serverless_resource_used_time_ms::DECIMAL(38, 4))) / 1000 / 60 / 60)::bigint AS serverless_cuh
FROM
hologres.hg_serverless_computing_query_log
WHERE
status = 'SUCCESS'
AND serverless_allocated_cores IS NOT NULL
AND serverless_resource_used_time_ms IS NOT NULL
AND query_end BETWEEN '2024-05-01 00:00:00' AND '2024-05-31 24:00:00';-- 指定時間段
預估資源消耗量
若您尚未開通Serverless Computing,但希望通過Serverless資源執行某些SQL語句,您可以先利用Hologres執行個體資源來執行。Hologres系統資料表hologres.hg_query_log中記錄了cpu_time_ms欄位,您可以通過該欄位查詢執行SQL任務所消耗的CPU時間,然後通過cpu_time_ms / 1000 / 60 / 60粗略估算使用Serverless資源執行該SQL語句的資源消耗量。查詢cpu_time_ms資訊的SQL命令如下:
SELECT cpu_time_ms FROM hologres.hg_query_log WHERE query_id = 'xxx';
由於本執行個體資源可能受到其他負載影響,而Serverless資源不受其他負載影響,並且二者資源量可能有差異,因此該方法無法精確預估Serverless的資源消耗量。建議選擇部分重點SQL任務,Serverless Computing使用指南,直接使用Serverless資源進行實際資源消耗量的測試,測試過程對本執行個體其他任務無影響。
消費監控與警示
日累計用量限制
Hologres V3.1.5版本起,支援通過如下SQL限制每日可使用的Serverless Computing資源量。該限制僅支援Superuser設定。
-- 對DB設定上限
ALTER DATABASE <db_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = xx;
-- 對User設定上限
ALTER USER <user_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = xx;
-
限制說明
-
預設值為-1,即不設限制。
-
單位為CUH。
-
Hologres每10min匯總並更新當前執行個體的Serverless Computing資源總用量,因此該限制可能存在10min延時。
-
執行SQL前,Hologres會對比“執行個體今日Serverless已用資源量”和“目前使用者/DB的Serverless可用資源量限制”。如果已達限制,則該SQL預設自動轉由本執行個體計算資源執行。如果未達限制,則該SQL會正常使用Serverless資源執行。
-
Hologres按當前DB預設時區的自然日統計Serverless Computing已用資源量。可在同一個Session內執行如下語句查詢當前DB預設時區。
-- RESET時區,以避免受當前用戶端時區、目前使用者預設時區影響 RESET timezone; -- 查詢當前DB的預設時區 SHOW timezone;
-
-
使用建議
-
如果您長期使用Hologres Serverless Computing功能,可以通過查詢指定時間內的資源消耗量判斷合適的日累計用量上限。
-
如果您未使用過Hologres Serverless Computing功能,則建議充分使用、生產穩定後,再根據使用方式判斷是否設定日累計用量限制及合適的上限。
-
如果您不希望SQL在Serverless Computing資源用量達到限制時自動轉由本執行個體計算資源執行,可以通過執行如下命令,使部分查詢直接報錯。該參數僅支援Superuser設定。
-- DB層級設定
ALTER DATABASE <db_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
-- User層級設定
ALTER USER <user_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
-
預設值為true,超限制時SQL自動轉由本執行個體資源執行。
-
可設為false,即超限制時SQL直接報錯
serverless computing is not available due to exceeding cuh usage threshold, please adjust the threshold or trun off serverless computing for current query。
成本分析
您可通過費用與成本的 模組,對Hologres的計算資源計費項目進行費用監控與分析。
-
登入費用與成本,在左側導覽列單擊。
-
在成本分析頁右側選擇計費項目,並根據實際情況選擇成本類型、時間粒紋。
-
在成本分析頁右側篩選條件地區,根據具體的資源類型選擇 計費項目。
更多資訊請參見成本分析。
消費警示
您可通過阿里雲的費用與成本,對部分地區、部分商品的後付費消費項進行預算管理並設定警示,詳情請參見費用預警。
單條SQL執行時間長度警示
Hologres現已支援對Serverless Computing運行指標進行監控,推薦您根據業務情境對Serverless Computing建立警示規則,以避免Serverless Computing產生預期外的費用。
例如對於監控指標正在啟動並執行Serverless Computing的查詢中,最長的時間長度,推薦的警示規則如下:
警告(Warn):“正在啟動並執行Serverless Computing的查詢中,最長的時間長度連續5個周期(1周期=1分鐘),監控值>=3600000milliseconds”。

詳情請參見監控警示實踐。
相關文檔
-
Serverless Computing功能的介紹詳情,請參見Serverless Computing。
-
Serverless Computing功能的使用詳情,請參見Serverless Computing使用指南。