Pricing
Hologres shared cluster (Lakehouse Acceleration) uses a serverless approach to accelerate queries on data in MaxCompute data warehouses and OSS data lakes. It also supports federated analytics across data lakes and warehouses. This service uses the same billing method as the original shared cluster (MaxCompute BI Acceleration). You pay only for queries you run — no charges apply when the instance is idle.
Billing model
The billing formula is:
Cost per query job = Amount of input data scanned × Unit price
Key billing rules:
| Rule | Detail |
|---|---|
| Minimum charge | 10 MB per query. Queries that scan less than 10 MB are billed at 10 MB to account for query startup overhead. |
| Billing cycle | Bills are generated hourly and contain data from the two hours prior. |
| No idle charges | No charges are incurred when no queries are running. |
| Dedicated resources | The shared cluster (Lakehouse Acceleration) uses dedicated computing resources. |
Pricing
Starting March 8, 2023, all queries on shared cluster (Lakehouse Acceleration) instances receive a 50% discount. This offer ends on April 1, 2025.
|
Billing method |
Region |
Original price |
Promotional price |
Unit |
|
Pay-as-you-go by data scanned per SQL query |
China (Beijing) |
0.4469 |
0.22345 |
CNY/GB |
|
China (Shanghai) |
0.4469 |
0.22345 |
CNY/GB |
|
|
China (Hangzhou) |
0.4469 |
0.22345 |
CNY/GB |
|
|
China (Shenzhen) |
0.4469 |
0.22345 |
CNY/GB |
|
|
Singapore |
0.563126 |
0.281563 |
CNY/GB |
Reduce query costs
Three techniques lower the volume of data scanned and reduce your bill:
-
Apply partition filters: When querying partitioned tables, add partition filter conditions to skip irrelevant partitions.
-
Select fewer columns: Query only the fields you need rather than using
SELECT *. -
Use Hash Clustering tables: Convert MaxCompute tables to Hash Clustering tables to enable bucket pruning, aggregation pushdown, and storage optimization. See Hash Clustering for details.
Query your scan volume
Permissions
Access to scan volume data in hologres.hg_query_log depends on your role:
| Role | Scope |
|---|---|
| Superuser | All DBs in the instance |
| pg_read_all_stats group member | All DBs in the instance |
| db_admin (simple permission model (SPM) or schema-level permission model (SLPM) enabled) | Current DB only |
| Regular user | Own queries in the current DB only |
Grant superuser access
-- Replace "Alibaba Cloud account ID" with the actual username.
-- For a RAM user, add "p4_" before the account ID.
ALTER USER "Alibaba Cloud account ID" SUPERUSER;
Grant pg_read_all_stats access
GRANT pg_read_all_stats TO "Alibaba Cloud account ID"; -- Standard PostgreSQL authorization model
CALL spm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- SPM
CALL slpm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- SLPM
Grant db_admin access (current DB only)
CALL spm_grant('<db_name>_admin', 'Alibaba Cloud account ID'); -- SPM
CALL slpm_grant('<db_name>.admin', 'Alibaba Cloud account ID'); -- SLPM
For a full overview of permission management, see Permission management overview.
If log_min_duration_statement is set for the instance, hg_query_log only records SQL statements whose execution time meets or exceeds that threshold. Billing details for faster queries will not appear. To check the current threshold:
SHOW log_min_duration_statement;
Query aggregated scan volume by day
Use this query to get daily scan totals for a time range. Requires superuser access.
Syntax
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, -- 10 MB minimum applied per query
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 >= 'start_time'::TIMESTAMPTZ
AND query_end < 'end_time'::TIMESTAMPTZ
GROUP BY 1
ORDER BY 3 DESC;
Example: Query scan volume from 10:00 to 11:00 on January 1, 2022 (UTC+8)
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,
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;
Query scan volume per SQL statement
Use this query to see billable scan volume for each individual SQL statement over a time range. Requires superuser access.
All examples use billing_read_bytes — the scan volume with the 10 MB minimum applied — as the field used for cost calculation.
Syntax
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, -- 10 MB minimum applied
application_name
FROM hologres.hg_query_log
WHERE status = 'SUCCESS'
AND command_tag IN ('SELECT')
AND read_bytes IS NOT NULL
AND query_end >= 'start_time'::TIMESTAMPTZ
AND query_end < 'end_time'::TIMESTAMPTZ;
The billing_read_bytes field represents the scanned data volume used for billing.
Example: Query per-statement scan volume from 10:00 to 11:00 on March 1, 2022 (UTC+8)
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,
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;
View query details
A superuser can view query details for all users. A Resource Access Management (RAM) user can view only their own SQL statements.
SELECT usename, status, query_id, command_tag, duration, query, read_bytes, application_name
FROM hologres.hg_query_log;
For more information, see Query management.
Lifecycle management
After you purchase and enable a shared cluster (Lakehouse Acceleration) instance, the system aggregates your previous day's query data, generates a bill, and automatically deducts the fee from your account.
-
After you purchase and enable a Hologres shared cluster (Lakehouse Acceleration) instance from the Alibaba Cloud website, you can start using it. The system then aggregates the data from all SQL queries from the previous day, generates a bill, and automatically deducts the fee from your account.
-
If your Alibaba Cloud account has an overdue payment, all instances under that account enter an Overdue state. If service suspension protection is not enabled, the instance is suspended immediately. If service suspension protection is enabled, the suspension is postponed. For more information, see Expenses and Costs.
-
If you do not add funds to your account within 15 days of the suspension, no bills are generated during this period. The instance is then released. This means the instance is deleted from the console, and all its data is purged and cannot be recovered.
-
Alibaba Cloud provides service suspension protection. This feature lets you continue using pay-as-you-go services for a specific period or within a specific quota after your account has an overdue payment. Billing continues as normal during the protection period. The protection quota is not an upper limit on the total overdue amount. Your protection quota or duration is automatically calculated and updated each month based on factors such as your historical spending on Alibaba Cloud. For more information, see Service Suspension Protection.
The following table describes what happens when a payment becomes overdue:
| Stage | Condition | Outcome |
|---|---|---|
| Overdue state | Overdue amount < 1,000 USD | Instance continues to run normally |
| Failed deduction | Overdue amount reaches 1,000 USD; deduction fails | Instance runs normally for 14 more days |
| Service suspended | 15th day after failed deduction | Instance enters a locked state; cannot be accessed; no bills generated |
| Instance released | 15th day after service suspended | Instance deleted from the console; all data purged and cannot be recovered |