产品定价

本文为您介绍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.4469

0.22345

元/GB

华东2(上海)

0.4469

0.22345

元/GB

华东1(杭州)

0.4469

0.22345

元/GB

华南1(深圳)

0.4469

0.22345

元/GB

新加坡

0.563126

0.281563

元/GB

生命周期管理

Hologres共享集群(湖仓加速版)根据SQL扫描的数据量进行收费,采用根据使用量的后付费模式。该模式下的实例周期管理流程如下:

  • 在阿里云官网购买一个Hologres共享集群(湖仓加速版)实例,开通成功后即可运行该实例,系统将会汇总前一天内所有SQL对应的数据,推送账单并从您的账户中自动扣除费用。

  • 阿里云账号欠费后,该账号下所有实例将会变成欠费状态。如果未启用延期免停,欠费后实例将进入停机状态。如已开启延期免停,实例会延期停机,具体延期情况请参见费用与成本

  • 若实例停机后的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;