MaxCompute は、ジョブが正常に完了した後、コンピューティングリソースに対して課金します。料金はジョブタイプごとに計算され、1 日単位で集計された後、翌日の 06:00 までにアカウント残高から差し引かれます。
次の 2 つの課金方法があります:
-
従量課金 (後払い): 各ジョブが終了した後、消費されたリソースに対してのみ課金されます。サポートされるジョブタイプは SQL、MapReduce、Spark、Mars、MaxCompute クエリアクセラレーション (MCQA)、MaxFrame です。
-
サブスクリプション (前払い): 一定量のコンピューティングリソースを事前に購入します。MapReduce、Spark、Mars、MaxFrame のジョブは、購入したクォータ内で実行される場合、追加料金は発生しません。
アカウントに支払い遅延がある場合、サービスが停止される可能性があります。中断を避けるため、速やかにサブスクリプションを更新してください。
課金の概要
|
ジョブタイプ |
課金基準 |
単価 |
|
Standard SQL |
スキャンされた入力データ × SQL 複雑度 |
USD 0.0438/GB |
|
SQL (外部テーブル) |
入力論理データサイズ × SQL 複雑度 |
USD 0.0044/GB |
|
MapReduce |
課金時間 (コア数 × 実行時間) |
USD 0.0690/課金時間 |
|
Spark |
課金時間 (CPU ベースとメモリベースのいずれか大きい方) |
USD 0.1041/課金時間 |
|
Mars |
課金時間 (CPU ベースとメモリベースのいずれか大きい方) |
USD 0.1041/課金時間 |
|
MaxFrame (Standard Edition) |
課金時間 (CU 時間) |
USD 0.0541/課金時間 |
|
MCQA |
スキャンされた入力データ × SQL 複雑度 |
USD 0.0438/GB |
SAU (Riyadh - パートナーリージョン) はパートナーによって運用されており、単価が異なります。詳細については、以下の各ジョブタイプのセクションをご参照ください。
課金対象外の項目
|
シナリオ |
詳細 |
|
失敗したジョブ |
SQL、MapReduce、Spark、Mars のジョブが失敗した場合、課金されません。 |
|
キュー待機時間 |
MapReduce、Spark、Mars のジョブがキューで待機している時間は課金されません。 |
|
キャンセルされた MCQA ジョブ |
キャンセルされたクエリアクセラレーションジョブは課金されません。 |
|
アイドル時間 |
ジョブが実行されていない場合、料金は発生しません。 |
|
課金対象外のジョブタイプ |
グラフおよび機械学習のジョブは無料です。 |
|
UDF のみの SQL ジョブ |
ユーザー定義関数 (UDF) のみを実行する SQL ジョブは課金されません。 |
|
サブスクリプションクォータ内 |
MaxCompute サブスクリプションをご利用の場合、購入したクォータ内で実行される MapReduce、Spark、Mars、MaxFrame のジョブには、追加料金は発生しません。 |
サブスクリプション
1 コンピューティングユニット (CU) は、4 GB のメモリと 1 つの CPU コアで構成されます。
|
リソース |
メモリ |
CPU |
価格 |
|
1 CU |
4 GB |
1 CPU コア |
USD 22.0/月 |
サブスクリプションリソースの監視と管理には、リソース監視をご利用ください。
新規ユーザーの場合は、まず従量課金から始めることをお勧めします。リソース消費が予測可能で、継続的に高い場合は、サブスクリプションの方がコスト効率に優れています。
Standard SQL ジョブ
課金の仕組み
料金 = スキャンされた入力データ (GB) × SQL 複雑度 × USD 0.0438
スキャンされた入力データ は、SQL ジョブが実際に読み取った圧縮後のデータサイズであり、テーブル全体のサイズではありません。次の 2 つの最適化により、このサイズを削減できます。
-
パーティションフィルタリング: クエリに
WHERE ds > 20130101が含まれ、dsがパーティションキーである場合、一致するパーティション内のデータのみが課金対象となります。 -
列プルーニング:
SELECT f1, f2, f3 FROM t1は、列f1、f2、f3のみを課金対象とし、テーブル全体は対象としません。 論理サイズ: 圧縮およびエンコーディング前のデータサイズ。
SQL 複雑度 は、ステートメント内の SQL キーワードの数に基づいて決まります。
|
SQL キーワード数 |
複雑度係数 |
|
≤ 3 |
1 |
|
4–6 |
1.5 |
|
7–19 |
2 |
|
≥ 20 |
4 |
キーワード数の計算式は次のとおりです。
キーワード数 = JOIN 数 + GROUP BY 数 + ORDER BY 数 + DISTINCT 数 + ウィンドウ関数数
+ MAX(INSERT 数 | UPDATE 数 | DELETE 数 − 1, 1)
クエリを実行する前にコストを見積もるには、 COST SQL コマンドを使用します。
COST SQL <your SQL statement>;
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.0438/GB |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.05256/GB |
計算例
例 1: DISTINCT、GROUP BY、ORDER BY を含むクエリ
odps@ $odps_project >COST SQL SELECT DISTINCT total1 FROM
(SELECT id1, COUNT(f1) AS total1 FROM in1 GROUP BY id1) tmp1
ORDER BY total1 DESC LIMIT 100;
Input: 1825361100.8 Bytes
Complexity: 1.5
このクエリには 4 つのキーワード (1 DISTINCT + 1 GROUP BY + 1 ORDER BY + MAX(0-1, 1) = 4) があり、複雑度は 1.5 です。入力データが約 1.7 GB の場合:
コスト = 1.7 GB × 1.5 × USD 0.0438 = USD 0.11
例 2: 列プルーニングがコストに与える影響
テーブルに 20 列あり、圧縮後のサイズが 40 GB であるとします。フルテーブルスキャンでは、40 GB 全体が課金対象となります。クエリが 20 列のうち 3 列のみを読み取る場合 (圧縮データで約 6 GB)、 コストは比例して減少します。
|
クエリ |
スキャンされたデータ |
コスト |
|
フルテーブルスキャン |
40 GB |
40 × 1 × USD 0.0438 = USD 1.75 |
|
3 列のクエリ |
6 GB |
6 × 1 × USD 0.0438 = USD 0.26 |
必要な列のみを選択することで、SQL のコストを大幅に削減できます。
外部テーブルをクエリする SQL ジョブ
2019 年 3 月以降、外部テーブルを参照する SQL ジョブは、内部テーブルのクエリとは別に課金されます。
外部テーブルをクエリする SQL ジョブには、次のものが含まれます。
-
OSS 外部テーブルジョブ
-
Tablestore (OTS) 外部テーブルジョブ
-
Hologres 外部テーブルジョブ
-
HBase 外部テーブルジョブ
-
JDBC (RDS など) 外部テーブルジョブ
-
HDFS 外部テーブルジョブ
-
OSSHDFS 外部テーブルジョブ
-
Object Table ジョブ
課金の仕組み
料金 = 入力論理データサイズ (GB) × SQL 複雑度 × USD 0.0044
ここで:
-
論理サイズ: 圧縮およびエンコード前のデータサイズです。
-
SQL 複雑度係数は 1 です。
-
クエリが内部テーブルと外部テーブルの両方を結合する場合、各部分はそれぞれの料金で課金されます。
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.0044/GB |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.00528/GB |
MapReduce ジョブ
MapReduce ジョブの従量課金は、2017 年 12 月 19 日に開始されました。
課金の仕組み
1 日の料金 = 総課金時間 × USD 0.0690
単一ジョブの課金時間:
課金時間 = ジョブの実行時間 (時間) × 使用された CPU コア数
たとえば、100 コアを使用して 30 分間実行されたジョブの場合: 100 × 0.5 = 50 課金時間。
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.0690/課金時間 |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.0828/課金時間 |
Spark ジョブ
Spark ジョブの従量課金は、2019 年 2 月 1 日に開始されました。詳細については、「MaxCompute Spark」をご参照ください。
課金の仕組み
1 日の料金 = 総課金時間 × USD 0.1041
課金時間は、CPU ベースとメモリベースの計算のうち、大きい方が適用されます。
課金時間 = MAX(CPU コア数 × 実行時間 (時間), CEILING(メモリ GB × 実行時間 (時間) / 4))
これにより、ジョブが使用するリソース (CPU またはメモリ) のうち、より多く消費した方に基づいて課金されます。
例:
|
CPU コア数 |
メモリ |
実行時間 |
CPU ベース |
メモリベース |
課金時間 |
|
2 |
5 GB |
1 時間 |
2 × 1 = 2 |
⌈5 × 1 / 4⌉ = 2 |
2 |
|
2 |
10 GB |
1 時間 |
2 × 1 = 2 |
⌈10 × 1 / 4⌉ = 3 |
3 |
2 番目の例では、CPU コア数が同じであっても、メモリがコストを決定します。
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.1041/課金時間 |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.12492/課金時間 |
Mars ジョブ
Mars ジョブの従量課金は、2020 年 9 月 1 日に開始されました。詳細については、「データサイエンス (Mars)」をご参照ください。
課金の仕組み
Mars ジョブは、Spark ジョブと同じ課金計算式を使用します。
1 日の料金 = 総課金時間 × USD 0.1041課金時間 = MAX(CPU コア数 × 実行時間 (時間), CEILING(メモリ GB × 実行時間 (時間) / 4))
例:
|
CPU コア数 |
メモリ |
実行時間 |
課金時間 |
|
2 |
5 GB |
1 時間 |
2 |
|
2 |
10 GB |
1 時間 |
3 |
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.1041/課金時間 |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.12492/課金時間 |
MCQA ジョブ
MCQA ジョブの従量課金は、2020 年 10 月 1 日に開始されました。詳細については、「クエリアクセラレーション (MCQA)」をご参照ください。
MCQA の従量課金は、中国 (香港)、シンガポール、インドネシア (ジャカルタ)、マレーシア (クアラルンプール) で利用できます。この機能はパブリックプレビュー中です。その他のリージョンは後日追加される予定です。
課金の仕組み
料金 = スキャンされた入力データ (GB) × SQL 複雑度 × USD 0.0438
MCQA は、データ圧縮を伴う列指向ストレージを使用します。料金は、圧縮後のデータサイズに基づいて計算されます。
サブスクリプションリソースを購入し、その一部を MCQA に割り当てた場合、そのクォータ内で実行されるジョブには追加料金は発生しません。従量課金のみを使用している場合、MCQA ジョブは Standard SQL ジョブと同じ方法で課金されます。
パーティションフィルタリングにより、スキャンされるデータ量が削減され、Standard SQL ジョブと同様にコストが低減されます。
単価
|
リージョン |
価格 |
|
標準リージョン |
USD 0.0438/GB |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.05256/GB |
MaxFrame ジョブ
課金の仕組み
1 日の料金 = 総課金時間 (CU 時間) × USD 0.0541
MaxFrame の従量課金は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (ウランチャブ)、中国 (深セン)、中国 (成都)、中国 (香港)、日本 (東京)、シンガポール、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、米国 (シリコンバレー)、米国 (バージニア)、中国東部 1 金融クラウドで利用できます。
単価
Standard MaxFrame ジョブ (従量課金 Standard Edition コンピューティングクォータを使用):
|
リージョン |
価格 |
|
標準リージョン |
USD 0.0541/課金時間 |
|
SAU (Riyadh - パートナーリージョン) |
USD 0.06496/課金時間 |
次のステップ
-
MaxCompute の請求書を分析して、コスト配分を理解し、節約の機会を特定します。「MaxCompute 課金利用記録の分析」をご参照ください。
-
コストの急増を調査し、予期しない料金の原因となっているプロジェクトやジョブを特定します。「MaxCompute 従量課金コストの急増のトラブルシューティング」をご参照ください。