Hologres のサーバーレスコンピューティングは、CPU やメモリのオーバーヘッドが高い SQL ジョブなど、大規模な SQL ジョブに対して、消費された計算リソースと使用期間に基づいて課金されます。このトピックでは、サーバーレスコンピューティングのリソース使用量と課金の詳細を確認する方法について説明します。
課金の概要
各 SQL ジョブに対して、サーバーレスコンピューティングはリソース使用量を CU·H (実際のリソース量 × 使用期間) で測定します。課金は 1 時間ごとに処理されます。毎時、システムは前の 1 時間にサーバーレスコンピューティングを使用して実行されたすべての SQL ジョブの使用量を集計し、それに応じて課金します。現在の単価については、「課金の概要」をご参照ください。
-
サーバーレスコンピューティングの課金は
2024-07-01(UTC+08:00) に開始されました。このドキュメントでは、サーバーレスコンピューティングのリソース使用量をモニタリングし、請求額を見積もり、予期せぬコストを防ぐためにジョブへのリソース割り当てを調整する方法について説明します。 -
サポートされているリージョンとゾーンのリストについては、「サーバーレスコンピューティングユーザーガイド」をご参照ください。
-
hologres.hg_query_logとhologres.hg_serverless_computing_query_logは、どちらも過去 30 日間のデータを保持します。
正常に実行された SQL ジョブのみが課金対象となります。失敗した実行は課金されません。
リソース使用量のクエリ
Hologres V2.1.18 以降では、hologres.hg_serverless_computing_query_log ビューをクエリして、サーバーレスコンピューティングのリソース使用量を計算し、サーバーレス課金数式を使用してコストを見積もることができます。スロークエリログの詳細については、「スロークエリログの表示と分析」をご参照ください。
-
Hologres V2.2.7より前では、スロークエリログには、失敗したすべてのサーバーレスコンピューティングジョブと、100ミリ秒を超えて実行された成功したジョブが記録されていました。Hologres V2.2.7以降、ログにはすべてのサーバーレスコンピューティングジョブが含まれるようになりました。 -
スロークエリログは、各 SQL 文のリソース使用量を記録します。課金時に、システムはデータ集約と単位変換を適用する場合があり、これによりわずかな差異が生じることがあります。
権限要件
スロークエリログからサーバーレスコンピューティングの使用量と課金を見積もるには、特定の権限が必要です。以下に、権限ルールと権限付与のメソッドについて説明します。
-
インスタンス内のすべてのデータベースにわたるデータスキャン量のをクエリする
-
メソッド 1:次のコマンドを使用してスーパーユーザー権限を付与します。
-- "Alibaba Cloud account ID" を実際のユーザー名に置き換えます。 -- RAM ユーザーの場合、アカウント ID の前に "p4_" を付けます。 ALTER USER "Alibaba Cloud account ID" SUPERUSER; -
メソッド 2:次のコマンドを使用してユーザーを pg_read_all_stats グループに追加します。
説明スーパーユーザー権限に加えて、Hologres はすべてのデータベースにわたるデータスキャン量を表示するための pg_read_all_stats グループをサポートしています。すべてのログにアクセスする必要がある一般ユーザーの場合は、スーパーユーザーに連絡して権限付与を受け、グループに追加してもらう必要があります。
GRANT pg_read_all_stats TO "Alibaba Cloud account ID";-- 標準 PostgreSQL 権限付与モデル CALL spm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- SPM CALL slpm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- SLPM
-
-
現在のデータベースのデータスキャン量を表示する
-
簡易権限モデル (SPM) または スキーマレベルの簡易権限モデル (SLPM) を有効にし、ユーザーを db_admin グループに追加します。db_admin ロールは、現在のデータベースのデータスキャン量を表示できます。次のコマンドを使用できます。
CALL spm_grant('<db_name>_admin', 'Alibaba Cloud account ID'); -- SPM CALL slpm_grant('<db_name>.admin', 'Alibaba Cloud account ID'); -- SLPM -
一般ユーザーは、自分のアカウントに関連付けられたデータベース内で自身のデータスキャン量をクエリできます。
-
権限の詳細については、「権限管理の概要」をご参照ください。
単一 SQL 文のリソース使用量のクエリ
次の SQL コマンドを使用して、サーバーレスコンピューティングジョブの詳細なリソース使用量を取得できます。
SELECT
*,
queue_time_ms, -- SQL がサーバーレスコンピューティングのキューで待機した時間 (ミリ秒)
serverless_allocated_cores, -- サーバーレスコンピューティングがこの SQL ジョブに割り当てた CU 数
serverless_resource_used_time_ms, -- SQL が実際にサーバーレスコンピューティングリソースを使用した時間 (ミリ秒)
(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 コマンドを使用して、特定のタイムウィンドウ内で正常に実行されたサーバーレスコンピューティングジョブの総リソース使用量を計算できます。
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';-- 時間範囲を指定します
リソース使用量の見積もり
サーバーレスコンピューティングを有効にしていないが、特定の SQL 文をサーバーレスリソースで実行した場合のコストを見積もりたい場合は、まず Hologres インスタンスのリソースを使用して実行できます。hologres.hg_query_log システムテーブルには cpu_time_ms フィールドが含まれており、各 SQL ジョブが消費した CPU 時間を記録します。次の数式を使用して、サーバーレスリソースの使用量をおおよそ見積もることができます:cpu_time_ms / 1000 / 60 / 60。次のコマンドを使用して cpu_time_ms をクエリできます。
SELECT cpu_time_ms FROM hologres.hg_query_log WHERE query_id = 'xxx';
インスタンスリソースは他のワークロードの影響を受ける可能性がありますが、サーバーレスリソースは分離されています。2 つのリソースタイプのリソース容量も異なります。これらの理由から、このメソッドではサーバーレスの使用量を正確に見積もることはできません。「サーバーレスコンピューティングユーザーガイド」で説明されているように、主要な SQL ジョブを選択し、サーバーレスコンピューティングで直接テストすることを推奨します。これらのテストは、ご利用のインスタンス上の他のタスクに影響を与えません。
使用量のモニタリングとアラート
1 日あたりの使用量上限
Hologres V3.1.5 以降、次の SQL コマンドを使用して、1 日あたりのサーバーレスコンピューティングの使用量を制限できます。これらの上限を設定できるのはスーパーユーザーのみです。
-- データベースの上限を設定
ALTER DATABASE <db_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = xx;
-- ユーザーの上限を設定
ALTER USER <user_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = xx;
-
上限の詳細
-
デフォルト値は -1 で、上限が設定されていないことを示します。
-
単位は CU·H です。
-
Hologres は、インスタンスのサーバーレスコンピューティングの総使用量を 10 分ごとに集計して更新します。そのため、上限の適用には最大 10 分の遅延が生じる可能性があります。
-
SQL 文を実行する前に、Hologres はインスタンスの現在の 1 日あたりのサーバーレス使用量を、ユーザーまたはデータベースに設定された上限と比較します。上限に達した場合、SQL 文は自動的にインスタンスの計算リソースを使用するようにフォールバックします。それ以外の場合、SQL 文はサーバーレスリソースで実行されます。
-
Hologres は、データベースのデフォルトのタイムゾーンに基づいて 1 日あたりのサーバーレス使用量を追跡します。同じセッションで次のコマンドを実行して、現在のデータベースのタイムゾーンを確認できます。
-- クライアントまたはユーザー設定の影響を避けるためにタイムゾーンをリセット RESET timezone; -- データベースのデフォルトのタイムゾーンを表示 SHOW timezone;
-
-
推奨事項
-
Hologres のサーバーレスコンピューティングを定期的に使用する場合は、「指定した期間のリソース使用量のクエリ」で説明されている使用状況情報を確認することで、適切な 1 日あたりの上限を決定できます。
-
サーバーレスコンピューティングを初めて使用する場合は、ワークロードが安定するまで待ってから 1 日あたりの使用量上限を設定することを推奨します。
-
上限を超えた場合にクエリが自動的にインスタンスリソースにフォールバックするのを防ぎ、代わりにクエリを即座に失敗させるには、次のコマンドを実行します。このパラメーターを設定できるのはスーパーユーザーのみです。
-- データベースレベルで設定
ALTER DATABASE <db_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
-- ユーザーレベルで設定
ALTER USER <user_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
-
デフォルト値は `true` で、上限を超えた場合にインスタンスリソースへの自動フォールバックを有効にします。
-
このパラメーターを `false` に設定すると、クエリは失敗し、次のエラーが報告されます:
serverless computing is not available due to exceeding cuh usage threshold, please adjust the threshold or turn off serverless computing for current query。
コスト分析
[費用とコスト] の モジュールを使用して、Hologres 計算リソースの課金をモニタリングおよび分析できます。
-
[費用とコスト] にログインします。左側のナビゲーションウィンドウで、 をクリックします。
-
[コスト分析] ページで、右側の セクションで、請求項目 を選択します。次に、必要に応じて コストタイプ と 時間粒度 を選択します。
-
右側の フィルター条件 セクションで、リソースタイプに基づいて適切な 請求項目 を選択します。
詳細については、「コスト分析」をご参照ください。
支出アラート
Alibaba Cloud が提供する [費用とコスト] サービスを使用して、予算を管理し、特定のリージョンの特定のプロダクトの従量課金支出に対するアラートを設定できます。詳細については、「支出アラート」をご参照ください。
単一 SQL 実行時間のアラート
Hologres は、サーバーレスコンピューティングメトリックのモニタリングをサポートしています。ビジネスシナリオに基づいてアラートルールを作成し、予期せぬ料金を回避することを推奨します。
たとえば、メトリック 実行中のサーバーレスコンピューティングクエリの最長期間 については、次のアラートルールを推奨します。
警告:実行中のサーバーレスコンピューティングクエリの最長期間が 5 期間連続 (1 期間 = 1 分) で 3,600,000 ミリ秒以上。

詳細については、「モニタリングとアラートのベストプラクティス」をご参照ください。
関連ドキュメント
-
サーバーレスコンピューティングの概要については、「サーバーレスコンピューティング」をご参照ください。
-
使用方法については、「サーバーレスコンピューティングユーザーガイド」をご参照ください。