すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:消費コントロール

最終更新日:Jun 23, 2026

このトピックでは、従量課金コンピューティングタスクの消費をコントロールする方法について説明します。

特徴

MaxCompute の従量課金リソースは弾力的でオンデマンドでスケールし、リソース使用量に事前設定された制限はありません。想定外のコストを避けるために、コンピューティングタスクの消費を監視してください。MaxCompute は以下の消費コントロール機能を提供します。

特徴

コントロール方法

説明

文ごとのリソース制限

リソース消費を制限

MaxCompute は、SQL ステートメントが実行される前にそのリソース消費を推定します。推定消費量が事前設定されたしきい値を超えた場合、そのステートメントはブロックされ、システムは失敗ステータスとエラーメッセージを返します。この機能は、単一の SQL ステートメントが高額なコストを発生させるのを防ぐのに役立ちます。

1 日の累計消費額制限

コストアラート

プロジェクト内の標準 SQL の 1 日の累計消費量を監視します。その日の累計消費量と新しい SQL ステートメントの推定消費量の合計が事前設定されたしきい値を超えた場合、新しいステートメントはブロックされます。システムは失敗ステータスとエラーメッセージを返します。この機能は、1 日の標準 SQL の消費が予算を超えるのを防ぐのに役立ちます。

説明

1 日の累計 SQL 消費量とは、まだ請求されていない測定された使用量のみを指します。割引やプロモーションは含まれません。

文ごとのリソース制限

設定

以下の方法で、文ごとのリソース制限を設定できます。

  • プロジェクトレベルの設定

    プロジェクトオーナーまたは Super_Administrator ロールを持つユーザーは、以下のコマンドを実行して、文ごとのリソース制限を有効化または無効化する必要があります。

    -- 文ごとのリソース制限を有効化します。
    SETPROJECT odps.sql.metering.value.max=<m_value>;
    -- 文ごとのリソース制限を無効化します。
    SETPROJECT odps.sql.metering.value.max;

    m_value パラメーターは、単一の SQL ステートメントの最大消費しきい値です。これは SQL 読み取り量 (GB) × SQL 複雑度 として計算され、金額ではありません。

    説明

    プロジェクトの文ごとの消費は m_value によって制約されます。ステートメントの推定消費量がこの m_value を超えた場合、システムはその実行をブロックします。

  • セッションレベルの設定

    単一の実行に対して文ごとのリソース制限を有効にするには、SQL ステートメントと一緒に以下のコマンドを送信します。このコマンドを含めない場合、制限は無効になります。この設定は現在の実行に対してのみ有効です。

    SET odps.sql.metering.value.max=<m_value>;

推奨事項

以下のベストプラクティスに従ってください。

  • 過去の SQL 消費量と予測される支出に基づいて、プロジェクトレベルの m_value を設定します。

    • 日次の詳細なメータリングデータをダウンロードし、プロジェクトレベルで SQL タスク (データ分類が ComputationSql のタスク) のリソース消費を計算できます。リソース消費は SQL 読み取り量 (GB) × SQL 複雑度 として計算されます。ビジネスの変動を考慮して、通常の最高日次消費量に基づいて適切な値を決定します。

    • または、コンピューティング消費をコスト に変換することもできます。ビジネスニーズに基づいて許容可能なコストを決定し、そのコストを消費値に変換し直します:。

  • まずプロジェクトレベルの制限を設定し、次に特定の例外的な SQL ステートメントに対してセッションレベルの m_value 制限を使用します。

    説明
    • セッションレベルの制限を設定する前に、誤用を避けるために、特定の SQL ステートメントが本当にそれを必要とすることを確認してください。

    • プロジェクトレベルとセッションレベルの両方の制限が設定されている場合、セッションレベルの制限が優先されます。

      たとえば、プロジェクトの m_value が 100 に設定されていても、そのプロジェクト内の特定の SQL ステートメントにセッションレベルの m_value が 200 に設定されている場合、そのステートメントは推定消費量が 200 を超えた場合にのみブロックされ、100 を超えてもブロックされません。セッションレベルの制限がない他の SQL ステートメントは、引き続きプロジェクトの制限である 100 に従い、推定消費量が 100 を超えるとブロックされます。

  • プロジェクトレベルまたはセッションレベルのいずれかの制限を設定すると、タスクの実行に影響します。これらの制限を、DataWorks のインテリジェントモニタリングなどのタスク失敗アラート機能と併用して、タスクの失敗を迅速に検出し、手動で介入してください。これにより、重要なタスクがブロックされてビジネス運用に影響を与えるのを防ぎます。

1 日の累計消費額制限

設定

次のコマンドを使用して、プロジェクトの 1 日の累計消費額制限を設定できます。このコマンドは、プロジェクトオーナーまたは Super_Administrator ロールを持つユーザーのみが実行できます。

SETPROJECT odps.costcontrol.rule={"byDate":{"sql":<Limit>}};
  • byDate:1 日の制限を設定します。累計消費量は 00:00:00 から 23:59:59 (UTC+8) までの期間で計算されます。カウンターは翌日にリセットされます。

  • Limit:プロジェクト内の標準 SQL の 1 日の累計消費額のしきい値で、米ドルで指定します。この消費量の追跡には、割引やプロモーションは含まれません。

    説明

    SQL ステートメントあたりのコスト = スキャンデータ量 (GB) × 複雑度 × 0.0438。パートナーが運営するサウジアラビア (リヤド) リージョンでは、標準 SQL の課金レートは 0.05256 米ドル/GB です。

注意事項

このコマンドで制限を設定した後、以下のルールに注意してください。

ルールタイプ

システムの動作

例と推奨事項

初回設定

システムは、プロジェクト内の標準 SQL の 1 日の総消費量を累計し、新しく送信された標準 SQL ステートメントの消費量を推定します。

例: SETPROJECT odps.costcontrol.rule={"byDate":{"sql":100}}; を実行してプロジェクトレベルの制限を初めて設定すると、システムは 1 日の合計を累計し、新しいタスクのコストを推定し始めます。

既存値の更新

システムは、新しい消費推定値を累計値と新しい制限と比較して、タスクをブロックするかどうかを決定します。

元の 1 日の制限が 100 で、現在の累計消費量が 99 であるとします。制限を 150 に変更してから、新しい標準 SQL ステートメントを送信します。

システムはまず新しい SQL ステートメントのコストを推定します (例:20)。推定コストと累計消費量の合計 (20 + 99) が 150 以下の場合、SQL ステートメントは実行されます。それ以外の場合はブロックされます。

1 日の累計消費量と推定消費量の合計が Limit を超える

システムは、新しく送信された標準 SQL タスクの実行をブロックし、エラーメッセージを返します。

  • エラー例:

    setproject odps.costcontrol.rule={"byDate":{"sql":100}}; コマンドを使用して消費制限を設定した後、プロジェクト内の標準 SQL の 1 日の累計消費量が制限を超えると、タスクは次のエラーで失敗します。

    Exceed Cost Limit : 
    {"AlreadyCost":"100.1","InstanceId":"xxx","Limit":"100","Project":"xxx","TaskType":"SQL","ThisTaskWillCost":"0","TimeWindow":"BYDATE"}
  • 推奨事項:

    この機能を、DataWorks のインテリジェントモニタリングなどのタスク失敗アラート機能と併用して、タスクの失敗を迅速に通知されるようにしてください。これにより、手動で介入し、重要なタスクがブロックされてビジネスに影響を与えるのを防ぐことができます。