Serverless Computing资源用量与计费

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使用指南

仅执行成功的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';-- 指定时间段

推荐配置

Hologres现已支持对Serverless Computing运行指标进行监控,推荐您根据业务场景对Serverless Computing创建告警规则,以避免Serverless Computing产生预期外的费用。

例如对于监控指标正在运行的Serverless Computing的查询中,最长的时长,推荐的告警规则如下:

警告(Warn):“正在运行的Serverless Computing的查询中,最长的时长连续5个周期(1周期=1分钟),监控值>=3600000milliseconds”。

jiankong.jpg

详情请参见监控告警实践

相关文档