本文为您介绍Hologres共享集群(湖仓加速版)实例的计费情况。
计费模式
Hologres共享集群(湖仓加速版)支持以Serverless方式加速查询存储于MaxCompute的仓内数据和OSS的湖数据,以及湖仓数据联邦分析。计费方式与原共享集群(MaxCompute BI 加速版)相同,即每执行一次SQL查询作业,Hologres将根据作业输入的数据量进行计费。
查询作业的计费公式为:
一次查询作业费用=查询输入数据量×单价
Hologres共享集群(湖仓加速版)服务使用单独的计算资源。
Hologres共享集群(湖仓加速版)按照每条查询作业扫描的数据量(每条查询至少 10 MB,即若由于存在查询启动开销,即使原始扫描数据量未满 10 MB,也需要按照 10 MB 计算)计费。
账单每小时推送一次,每次推送两个小时前的账单数据。
不查询不产生任何费用。
查询分区表时,您可以应用分区过滤条件,减少数据扫描量并提升查询性能。
您可通过减少查询字段、添加筛选条件,减少数据扫描量并降低查询成本。
转换MaxCompute表为Hash Clustering表,Hash Clustering表可以优化Bucket Pruning、Aggregation以及存储。更多Hash Clustering表信息请参见Hash Clustering。
产品定价
自2023年3月8日起,共享集群(湖仓加速版)助力您降本增效,所有查询享受5折优惠,优惠截止日期为2025年4月1日。
价格信息如下。
计费方式 | 地域 | 价格 | 活动价格 | 单位 |
按SQL扫描的数据量付费 | 华北2(北京) | 0.066705 | 0.0333525 | 美元/GB |
华东2(上海) | 0.066705 | 0.0333525 | 美元/GB | |
华东1(杭州) | 0.066705 | 0.0333525 | 美元/GB | |
华南1(深圳) | 0.066705 | 0.0333525 | 美元/GB | |
新加坡 | 0.084049 | 0.0420245 | 美元/GB |
生命周期管理
Hologres共享集群(湖仓加速版)根据SQL扫描的数据量进行收费,采用根据使用量的后付费模式。该模式下的实例周期管理流程如下:
在阿里云官网购买一个Hologres共享集群(湖仓加速版)实例,开通成功后即可运行该实例,系统将会汇总前一天内所有SQL对应的数据,推送账单并从您的账户中自动扣除费用。
阿里云账号欠费后,该账号下所有实例将会变成欠费状态。若账号累计欠费小于1000美元,实例正常运行。
账号累计欠费达到1000美元时扣款,扣款失败后的14天内,该实例正常运行。
实例扣款失败后的第15天,实例停服,处于锁定状态,无法被访问。在此期间将不会推送账单。
账号欠费停服后的第15天,实例将会被释放,系统将会从管控台将实例删除,实例相关的数据也会被清除且不能再恢复。
Query明细查询
使用SuperUser可以查看所有用户的Query明细信息,RAM用户可以查看自己运行的SQL相关信息。查询语句如下:
select usename,status,query_id,command_tag,duration,query,read_bytes,application_name FROM hologres.hg_query_log;
更多Query信息请参见Query管理。
查询扫描量
权限说明
查询扫描量需要有一定的权限,其权限规则和授权方式说明如下:
查询实例所有DB的数据扫描量。
授予用户Superuser权限。
Superuser账号可以查看实例所有DB的数据扫描量,授权命令如下:
--将“云账号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命令核对明细数据,执行此命令的账号需要具有实例的Superuser角色。
如果实例设置过log_min_duration_statement
参数,将只能查询到SQL执行时间大于等于log_min_duration_statement
参数值的计费明细。log_min_duration_statement
参数详细说明请参见慢Query日志查看与分析的配置项说明,使用如下语句查看log_min_duration_statement
参数的设置情况。
show log_min_duration_statement;
语法示例
select to_char(query_end,'DD Mon YYYY') as day ,round( sum( case when read_bytes < 10*1024*1024 then 10*1024*1024 else read_bytes end )/1024/1024 ) as "scan_size_mb" -- 每条查询至少10MB ,count(*) as "sql_count" from hologres.hg_query_log where status = 'SUCCESS' and command_tag in ('SELECT') and read_bytes is not null and query_end >= '开始时间'::TIMESTAMPTZ and query_end < '结束时间'::TIMESTAMPTZ group by 1 order by 3 desc;
使用示例
例如查询2022年1月1日10:00至2022年1月1日11:00的扫描数据量的示例如下。
select to_char(query_end,'DD Mon YYYY') as day ,round( sum( case when read_bytes < 10*1024*1024 then 10*1024*1024 else read_bytes end )/1024/1024 ) as "scan_size_mb" -- 每条查询至少10MB ,count(*) as "sql_count" from hologres.hg_query_log where status = 'SUCCESS' and command_tag in ('SELECT') and read_bytes is not null and query_end >= '2022-01-01 10:00:00+08'::TIMESTAMPTZ and query_end < '2022-01-01 11:00:00+08'::TIMESTAMPTZ group by 1 order by 3 desc;
查询一段时间的每条SQL扫描数据量
您可以使用如下SQL命令核对查询一段时间内每条SQL扫描数据量,执行此命令的账号需要具有实例的Superuser角色。
语法示例
select usename ,status ,query_id ,datname ,command_tag ,duration ,message ,query_start ,query_end ,query_date ,query ,case when read_bytes < 10*1024*1024 then 10*1024*1024 else read_bytes end as billing_read_bytes -- 每条查询至少10MB ,application_name from hologres.hg_query_log where status = 'SUCCESS' and command_tag in ('SELECT') and read_bytes is not null and query_end >= '开始时间'::TIMESTAMPTZ and query_end < '结束时间'::TIMESTAMPTZ;
billing_read_bytes字段即为用于计费的扫描数据量。
使用示例
例如查询2022年3月1日10:00至2022年3月1日11:00每条SQL扫描数据量的示例如下。
select usename ,status ,query_id ,datname ,command_tag ,duration ,message ,query_start ,query_end ,query_date ,query ,case when read_bytes < 10*1024*1024 then 10*1024*1024 else read_bytes end as billing_read_bytes -- 每条查询至少10MB ,application_name from hologres.hg_query_log where status = 'SUCCESS' and command_tag in ('SELECT') and read_bytes is not null and query_end >= '2022-03-01 10:00:00+08'::TIMESTAMPTZ and query_end < '2022-03-01 11:00:00+08'::TIMESTAMPTZ;