このトピックでは、Hologres 共有クラスタ (Lakehouse Acceleration Edition) インスタンスの課金について説明します。
課金方法
Hologres 共有クラスタ (Lakehouse Acceleration Edition) はサーバーレスモードで動作し、MaxCompute データウェアハウスのデータとオブジェクトストレージサービス (OSS) データレイクのデータに対するクエリの高速化に役立ちます。また、MaxCompute と OSS のデータに対するフェデレーテッドクエリもサポートしています。Hologres 共有クラスタ (Lakehouse Acceleration Edition) の課金方法は、Hologres 共有クラスタ (BI ベースの MaxCompute Acceleration Edition) と同じです。SQL クエリのジョブを実行するたびに、Hologres はジョブの入力データ量に基づいて料金を計算します。
料金は次の式を使用して計算されます。
Fees for a query job = Amount of input data × Unit priceHologres 共有クラスタ (Lakehouse Acceleration Edition) は専用のコンピューティングリソースを使用します。
Hologres 共有クラスタ (Lakehouse Acceleration Edition) は、クエリジョブごとにスキャンされたデータ量に基づいて課金されます。クエリ起動のオーバーヘッドによりクエリジョブでスキャンされたデータ量が 10 MB に達しない場合でも、クエリジョブごとに課金されるデータ量の最小値は 10 MB です。
システムは 1 時間ごとに請求書を送信します。各請求書には、2 時間前に発生した料金が記録されます。
クエリが実行されない場合は、料金は発生しません。
パーティションテーブルからデータをクエリする場合、フィルターを設定して、データのクエリ元のパーティションを指定できます。これは、スキャンされるデータ量を削減し、クエリのパフォーマンスを向上させるのに役立ちます。
クエリフィールドの数を減らし、フィルター条件を追加することで、スキャンされるデータ量を減らしてクエリコストを削減できます。
MaxCompute テーブルをハッシュクラスタテーブルに変換できます。ハッシュクラスタテーブルは、バケットプルーニング、集計、およびストレージの最適化に役立ちます。ハッシュクラスタテーブルの詳細については、ハッシュクラスタリングをご参照ください。
料金
2023 年 3 月 8 日から 2025 年 4 月 1 日までは、Hologres 共有クラスタ (Lakehouse Acceleration Edition) は 50% の割引を提供しています。
次の表に料金情報を示します。
Billing method | Region | Original unit price | Promotional unit price | Unit |
Pay-as-you-go based on the amount of data scanned per SQL query job | China (Beijing) | 0.066705 | 0.0333525 | USD/GB |
China (Shanghai) | 0.066705 | 0.0333525 | USD/GB | |
China (Hangzhou) | 0.066705 | 0.0333525 | USD/GB | |
China (Shenzhen) | 0.066705 | 0.0333525 | USD/GB | |
Singapore | 0.084049 | 0.0420245 | USD/GB |
ライフサイクル管理
Hologres 共有クラスタ (Lakehouse Acceleration Edition) は、SQL ステートメントを使用してスキャンされたデータ量に基づく従量課金制を使用します。従量課金制の Hologres 共有クラスタ (Lakehouse Acceleration Edition) インスタンスのライフサイクル管理は、次のルールに準拠しています。
国際サイト (alibabacloud.com) で Hologres 共有クラスタ (Lakehouse Acceleration Edition) インスタンスを購入した後、インスタンスを使用できます。システムは前日におけるすべての SQL ステートメントによってスキャンされたデータの合計量を要約し、請求書を送信します。システムは、Alibaba Cloud アカウントの残高から支払金額を自動的に差し引きます。
Alibaba Cloud アカウントに延滞料金がある場合、Alibaba Cloud アカウントに属するすべてのインスタンスが延滞になります。延滞料金が 1,000 米ドル未満の場合は、インスタンスは正常に実行されます。
アカウントの延滞料金が 1,000 米ドルに達し、差し引きに失敗した場合、インスタンスは 14 日以内は正常に実行されます。
差し引きに失敗してから 15 日目に、インスタンスはサービスの提供を停止し、ロックされます。インスタンスにアクセスできなくなります。この期間中、システムは請求書を送信しません。
延滞料金のためにインスタンスがサービスの提供を停止してから 15 日目に、インスタンスは解放され、コンソールから削除されます。インスタンス内のデータも削除され、復元できません。
SQL クエリに関する情報のクエリ
スーパーユーザーとして、すべてのユーザーのクエリ詳細を表示できます。RAM ユーザーは、実行した SQL ステートメントに関する情報を表示できます。ステートメントの例:
select usename,status,query_id,command_tag,duration,query,read_bytes,application_name FROM hologres.hg_query_log;SQL クエリの詳細については、クエリの管理をご参照ください。
スキャンされたデータ量のクエリ
説明
スキャンされたデータ量をクエリするには、特定の権限が必要です。このセクションでは、権限ルールと承認方法について説明します。
インスタンス内のすべてのデータベースのスキャンされたデータ量をクエリします。
スーパーユーザー権限をユーザーに付与します。
スーパーユーザーは、インスタンス内のすべてのデータベースのスキャンされたデータ量を表示できます。次のステートメントを実行して、スーパーユーザーロールをユーザーに割り当てます。
-- アカウント ID を Alibaba Cloud アカウント ID に置き換えます。ユーザーが RAM ユーザーの場合は、アカウント ID の前に p4_ を付けます。 ALTER USER "Account ID" SUPERUSER;別のユーザーを pg_read_all_stats ユーザーグループに追加します。
スーパーユーザーに加えて、pg_read_all_stats ユーザーグループのユーザーは、関連する Hologres インスタンス内のすべてのデータベースのスキャンされたデータ量をクエリする権限を持っています。スーパーユーザーの場合は、このユーザーグループに通常のユーザーを追加できます。このユーザーグループにユーザーを追加するには、次のステートメントのいずれかを実行します。
GRANT pg_read_all_stats TO "Account ID";-- 標準の PostgreSQL 承認モデルを使用して、関連する権限をユーザーに付与します。 CALL spm_grant('pg_read_all_stats', 'Account ID'); -- シンプルパーミッションモデル (SPM) を使用して、関連する権限をユーザーに付与します。 CALL slpm_grant('pg_read_all_stats', 'Account ID'); -- スキーマレベルパーミッションモデル (SLPM) を使用して、関連する権限をユーザーに付与します。
指定されたデータベースのスキャンされたデータ量を表示します。
db_admin ユーザーグループのユーザーは、関連する Hologres インスタンス内の指定されたデータベースのスキャンされたデータ量をクエリする権限を持っています。スーパーユーザーの場合は、SPM または SLPM を使用して、このユーザーグループに通常のユーザーを追加できます。
CALL spm_grant('<db_name>_admin', 'Account ID'); -- SPM を使用して、関連する権限をユーザーに付与します。 CALL slpm_grant('<db_name>.admin', 'Account ID'); -- SLPM を使用して、関連する権限をユーザーに付与します。通常のユーザーは、関連する Alibaba Cloud アカウント内のデータベースについて、自分自身でスキャンされたデータ量をクエリする権限を持っています。
権限の詳細については、権限管理の概要をご参照ください。
一定期間にわたってスキャンされたデータ量をクエリする
次の SQL ステートメントを実行して、詳細データを確認できます。SQL ステートメントを実行するユーザーに、Hologres 共有クラスタ (BI ベースの MaxCompute Acceleration Edition) インスタンスのスーパーユーザーロールが割り当てられていることを確認してください。
インスタンスに log_min_duration_statement パラメーターが設定されている場合、SQL ステートメントを使用してスキャンされたデータ量に基づいて生成された請求書の詳細のみをクエリできます。ステートメントの実行時間は、log_min_duration_statement パラメーターで指定された値以上である必要があります。log_min_duration_statement パラメーターの詳細については、低速クエリログのクエリと分析 で説明されている構成項目をご参照ください。次のステートメントを実行して、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" -- クエリジョブごとに少なくとも 10 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 >= '開始時刻'::TIMESTAMPTZ and query_end < '終了時刻'::TIMESTAMPTZ group by 1 order by 3 desc;例
次の SQL ステートメントを実行して、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" -- クエリジョブごとに少なくとも 10 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;
一定期間にわたって各 SQL ステートメントによってスキャンされたデータ量をクエリする
次の SQL ステートメントを実行して、一定期間にわたって各 SQL ステートメントを使用してスキャンされたデータ量をクエリできます。SQL ステートメントを実行するユーザーに、Hologres 共有クラスタ (BI ベースの MaxCompute Acceleration Edition) インスタンスのスーパーユーザーロールが割り当てられていることを確認してください。
構文
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 -- 各 SQL ステートメントで少なくとも 10 MB のデータをスキャンします。 ,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 < '終了時刻'::TIMESTAMPTZbilling_read_bytes フィールドは、課金に使用されるスキャンされたデータ量を示します。
例
次の SQL ステートメントを実行して、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 -- 各 SQL ステートメントで少なくとも 10 MB のデータをスキャンします。 ,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;