以前の予約の概要

BigQuery Reservations によって、オンデマンド料金から容量ベースの料金に切り替えることができます。容量ベースの料金では、クエリごとに個別に支払うのではなく、専用または自動スケーリングのクエリ処理容量に対して支払います。

予約によって、スロット単位で測定されたクエリ容量を異なるワークロードまたは組織の異なる部分に割り当てることができます。

BigQuery のエディションを利用する予約を扱う場合は、容量コミットメントの作成は任意ですが、定常状態のワークロードの費用は削減できます。

概要

BigQuery は次の 2 つの計算(分析)料金モデルを提供します。

  • オンデマンド料金: クエリでスキャンされたデータに対して料金が発生します。プロジェクトごとに固定されたクエリの処理容量があり、費用は各クエリによって処理されたバイト数に基づきます。

  • 容量ベースの料金: スロットで測定された、専用または自動スケーリングされたクエリ処理容量を、一定期間にわたって支払います。複数のクエリが同じスロット容量を共有します。

デフォルトでは、オンデマンド料金モデルに沿って請求されます。予約を使用すると、容量ベースの料金に切り替え、スロットの自動スケーリングを使用して、容量コミットメントを割引価格で購入できます。容量ベースのモデルを使用する場合、処理されたバイト数には課金されません。

両方の課金モデルを組み合わせることができます。たとえば、一部のワークロードをオンデマンド料金で実行して、それ以外は容量ベースの料金で実行できます。課金モデルはプロジェクトごとに指定されるため、クエリジョブに複数のプロジェクトを使用する必要があります。

予約のメリット

BigQuery Reservations を使用するメリットには、次のものがあります。

  • 予測可能性。容量ベースの料金では、費用が固定され、予測可能です。最大コストの予算を前もって指定し、専用の継続的な容量を割引価格で提供するスロット コミットメントも利用できます。

  • 柔軟性。ワークロードに割り当てる専用の容量を選択するか、ワークロードの要件に基づいて BigQuery が自動的に容量をスケーリングするようにします。最低 1 秒単位で消費されるスロットの使用で課金されます。

  • ワークロード管理。各ワークロードには、使用可能な BigQuery 計算リソースの指定されたプールがあります。それと同時に、ワークロードが指定されたスロットを一部しか使用していない場合、未使用のスロットは他のワークロード間で自動的に共有されます。

  • 一元購入: スロットをまとめて購入し、組織全体に割り当てることができます。BigQuery を使用するプロジェクトごとにスロットを購入する必要はありません。

予約

BigQuery の容量は、クエリで使用される仮想 CPU を表すスロットで測定されます。一般的に、より多くのスロットをプロビジョニングすると、同時に実行できるクエリの数が増え、複雑なクエリでも高速で実行できるようになります。

スロットは予約と呼ばれるプールに割り当てられます。予約を使用すると、特定の組織に合った方法でスロットを割り当てることができます。

たとえば、本番環境ワークロード用に prod という名前の予約と、テスト用に test という名前の個別の予約を作成するとします。これにより、テストジョブが本番環境ワークロードに必要なリソースと競合しなくなります。または、組織内の部門ごとに予約を作成することもできます。

予約は、常に割り当てられるベースライン スロットと、ワークロードの要求に基づき動的に追加または削除される自動スケーリングされたスロットを含むことができます。

予約を作成する前にスロット コミットメントを購入すると、default という名前の予約が自動的に作成されます。default の予約は特別なものではなく、便宜上作成されたものです。追加の予約が必要か、またはデフォルトの予約を使用するだけかを決めることができます。

割り当てるスロットを使用するには、次のセクションで説明するように、1 つ以上のプロジェクトを予約に割り当てる必要があります。

スロット割り当てを指定するには少なくとも 1 件の予約が必要です。予約内のスロット割り当ては、BigQuery スケジューラによって処理されます。

アサインメント

割り当てたスロットを使用するには、1 つ以上のプロジェクト、フォルダ、または組織を予約に割り当てる必要があります。リソース階層内の各レベルには、その上位のレベルから割り当てが継承されます。つまり、プロジェクトやフォルダが割り当てられていない場合、そのプロジェクトやフォルダには親フォルダや組織の割り当てが継承されます。リソース階層の詳細については、BigQuery リソースの整理をご覧ください。

予約に割り当てられているプロジェクトからジョブが開始されると、その予約のスロットが使用されます。(直接、または親フォルダか組織からの継承で)プロジェクトが予約に割り当てられていない場合、そのプロジェクトのジョブはオンデマンド料金を使用します。

None 割り当ては、割り当てがないことを表します。None に割り当てられたプロジェクトはオンデマンド料金を使用します。None 割り当ての一般的な使用例は、組織を予約に割り当て、その予約からオプトアウトできるよう、一部のプロジェクトまたはフォルダを None に割り当てるというものです。詳細については、プロジェクトを None に割り当てるをご覧ください。

割り当てを作成するときに、その割り当てのジョブタイプを指定します。

  • QUERY: この予約は、SQL、DDL、DML、BigQuery ML クエリなどのクエリジョブに使用します。

  • PIPELINE: この予約は、読み込みジョブと抽出ジョブに使用します。

    デフォルトでは、読み込みジョブと抽出ジョブは無料であり、スロットの共有プールを使用します。BigQuery は、この共有プールの使用可能容量や、表示されるスループットを保証しません。大量のデータを読み込む場合は、スロットが使用可能になるまでジョブが待機することがあります。その場合は、専用スロットを購入してパイプライン ジョブを割り当てることができます。アイドル スロットの共有を無効にして、専用の予約を追加作成することをおすすめします。

    読み込みジョブは、予約に割り当てられると無料のプールにアクセスできなくなります。パフォーマンスをモニタリングして、ジョブに十分な容量があることを確認してください。そうしないと、実際には無料プールを使用するよりもパフォーマンスが低下する可能性があります。

  • BACKGROUND: この予約は、独自の予約を使用して、BigQuery 検索インデックス管理ジョブまたはBigQuery 変更データ キャプチャ(CDC)バックグラウンド ジョブを実行することを選択する場合に使用してください。また、BigQuery へのソース データベースを Datastream のバックグラウンド適用オペレーションでレプリケートする場合にも、この予約を使用します。BACKGROUND 予約は Standard Edition では使用できません。

  • ML_EXTERNAL: この予約は、BigQuery の外部にあるサービスを使用する BigQuery ML クエリに使用します。詳細については、BigQuery ML ワークロードへのスロットの割り当てをご覧ください。ML_EXTERNAL 予約は Standard Edition では使用できません。

特定の割り当てにスロットを割り当てることはできません。BigQuery スケジューラは、予約の割り当てのスロット割り当てを処理します。

コミットメント

Reservations のコンセプト

容量コミットメントは、最小期間の BigQuery コンピューティング容量の一定量の購入です。容量コミットメントは、エディションで作成された予約では必須ではありませんが、定常状態のワークロードの費用を節約できます。

BigQuery では、いくつかのコミットメント プランから選択できます。これらは主に、コミットメントの費用と最小使用期間によって異なります。最新の料金情報については、容量コミットメント料金をご覧ください。

  • 年間契約。365 日間分のコミットメントを購入します。365 日後に、更新または別のタイプのコミットメント プランへの変更のいずれかを選択できます。

  • 月次契約。最低 30 日間分のコミットメントを購入します。30 日後には、いつでもプランを削除できます。

  • Flex Slots。60 秒のコミットメントを購入します。60 秒後には、いつでも削除できます。Flex Slots は、長期のコミットメントを購入する前に、定額制でワークロードがどのように動作するかをテストするのに適しています。周期的または定期的に使用したい場合や、税務申告など負荷の大きいイベントに使用するのにも便利です。

どのプランを選択しても、コミットメント期間の終了時にスロットは期限切れになりません。スロットは削除しない限り、保持されて課金されます。最小期間後にプランの種類の変更もできます。

スロットは容量の可用性の影響を受けます。スロット コミットメントを購入しようとする際に、購入が成功するとは限りません。ただし、コミットメントの購入が成功すると、確保した容量はコミットメントを削除するまで保証されます。

これらのプランについて詳しくは、コミットメント プランをご覧ください。

予約内のスロット割り当て

BigQuery では、フェア スケジューリングと呼ばれるアルゴリズムを使用して、単一の予約にスロット容量を割り当てます。

BigQuery スケジューラでは、スロットを予約内の実行中のクエリとともにプロジェクト間で均等に共有し、さらに特定のプロジェクトの複数ジョブでも均等に共有するように自動的に調整されます。スケジューラでは最終的な公平性を確保します。このため、短期的にいくつかのジョブでスロットの割り当てが不均衡になることがあっても、スケジューラによって最終的には是正されます。スケジューラの目的は、過度に積極的で、実行中のタスクのエビクションが発生する(結果としてスロット時間が無駄になる)状況と、過度に寛容で、ジョブでのタスク実行が長引く(結果としてスロット時間の割り当てが不均衡になる)状況の中間を見つけることです。

重要なジョブがスケジューラから受け取るより多いスロットを終始必要とする場合は、保証されているスロット数で追加の予約を作成し、その予約にジョブを割り当てることを検討してください。詳細については、ワークロードの管理をご覧ください。

アイドル スロット

任意の時点で、一部のスロットがアイドル状態のこともあります。これには次のものが含まれます。

  • 予約に割り当てられていないスロット コミットメント。
  • 予約ベースラインに割り当てられているものの、現在使用されていないスロット。

デフォルトでは、予約で実行されるクエリは、同じ管理プロジェクト内の他の予約のアイドル スロットを自動的に使用します。つまり、容量がある限り、ジョブは常に実行できます。リソースを必要とするクエリの優先度にかかわらず、アイドル状態の容量は必要に応じて元の予約にプリエンプティブルに戻ります。この処理はリアルタイムで自動的に行われます。

この機能を無効にして、予約にプロビジョニングされたスロットのみが使用されるようにするには、ignore_idle_slotstrue に設定します。ignore_idle_slotstrue に設定された予約では、アイドル状態のスロットを受け取りません。

異なるエディションの予約間でアイドル スロットを共有できません。共有できるのは、ベースライン スロットまたはコミット済みスロットのみです。自動スケーリング済みスロットは一時的に利用できる場合がありますが、スケールダウンされる可能性があるため、共有することはできません。

ignore_idle_slots が false である限り、予約にスロット数 0 の設定が可能で、未使用のスロットに引き続きアクセスできます。default 予約のみを使用する場合は、この方法で設定することをおすすめします。それから、その予約にプロジェクトまたはフォルダを割り当てると、アイドル スロットのみが使用されます。

ML_EXTERNAL 型を割り当てることは、前述の動作の例外にあたります。BigQuery ML の外部モデル作成ジョブによって使用されるスロットは、プリエンプティブルではありません。つまり、ml_external とクエリ割り当てタイプの両方を含む予約のスロットは、そのスロットが ML_EXTERNAL ジョブによって占有されていない場合にのみ、他のクエリジョブに使用できます。また、これらのジョブは、他の予約のアイドル スロットを使用することもありません。

制限事項

  • 購入した予約は他の組織とは共有できません。
  • 組織ごとに個別の予約と個別の管理プロジェクトを作成する必要があります。
  • 各組織では、1 つのロケーションにアクティブなコミットメントを持つ管理プロジェクトを最大 10 個作成できます。
  • アイドル状態の容量は、組織間や単一の組織内の異なる管理プロジェクト間で共有できません。
  • コミットメントは、リージョン リソースです。あるリージョンやマルチリージョンで購入したコミットメントは、他のリージョンやマルチリージョンでは使用できません。コミットメントを、リージョン間や、リージョンとマルチリージョン間で移動することはできません。
  • ある管理プロジェクトで購入したコミットメントを別の管理プロジェクトに移動することはできません。
  • あるエディションで購入したコミットメントは、別のエディションの予約で使用できません。
  • アイドル スロットは、異なるエディションの予約間で共有されません。
  • 自動スケーリングされたスロットは、不要になったときにスケールダウンするため、共有できません。

割り当て

スロット割り当ては、1 つのロケーションで購入できるスロットの最大数です。割り当てに対しては課金されません。予約とコミットメントに対してのみ課金されます。詳細については、予約の割り当てと上限をご覧ください。スロットの割り当てを増やす方法については、割り当ての増加リクエストをご覧ください。

料金

予約の料金については、フラットレート料金をご覧ください。

次のステップ