予約を使用したワークロード管理
このページでは、スロット予約を使用して BigQuery ワークロードを管理する方法について説明します。
スロットの予約
BigQuery では、スロットは予約と呼ばれるプールに割り当てられます。予約を使用すると、組織に適した方法で容量を管理し、ワークロードを分離できます。たとえば、本番環境ワークロード用に prod
という名前の予約と、テスト用に test
という名前の別の予約を作成します。これにより、テストジョブが本番環境ジョブとリソースを奪い合うことを避けられます。または、組織内の部門ごとに予約を作成してコンピューティング コストを割り当てることもできます。
予約と呼ばれてはいるものの、予約内の容量が必ずしも予約されているわけではありません。自動スケーリング予約を使用すると、需要に応じて容量が自動的にスケールアップまたはスケールダウンされます。また、アイドル スロットを予約間で共有できます。
予約の割り当て
予約で割り振られたスロットを使用するには、1 つ以上のプロジェクト、フォルダ、または組織に割り当てる必要があります。プロジェクト内のジョブが実行されると、割り当てられた予約のスロットが使用されます。リソースは、Google Cloud リソース階層内の親から割り当てを継承できます。プロジェクトが予約に割り当てられていない場合でも、親フォルダまたは組織の割り当てがある場合にはその割り当てが継承されます。
プロジェクトは、割り当てられているリソース階層内で最も明確な単一の予約を使用します。フォルダの割り当ては組織の割り当てをオーバーライドし、プロジェクトの割り当てはフォルダの割り当てをオーバーライドします。
プロジェクトに予約の割り当てや継承がない場合、ジョブはオンデマンド料金を使用します。リソース階層の詳細については、BigQuery リソースの整理をご覧ください。
割り当てがないことを表す None
にリソースを割り当てることができます。None
に割り当てられたプロジェクトでは、常にオンデマンド料金が使用されます。None
割り当ての一般的な使用例は、組織を予約に割り当て、None
を使用してその予約から特定のプロジェクトまたはフォルダをオプトアウトするというものです。詳細については、プロジェクトを None
に割り当てるをご覧ください。
割り当てを作成するときに、その割り当てのジョブタイプを指定します。
QUERY
: この予約は、SQL、DDL、DML、BigQuery ML(組み込みモデル)クエリなどの非継続的クエリジョブに使用します。BACKGROUND
: この予約は、独自の予約を使用して、BigQuery 検索インデックス管理ジョブ、BigQuery 変更データ キャプチャ(CDC)、または BigLake メタデータ キャッシュ バックグラウンド ジョブを実行する場合に使用してください。また、BigQuery へのソース データベースを Datastream のバックグラウンド適用オペレーションでレプリケートする場合にも、この予約を使用します。BACKGROUND
予約は Standard Edition では使用できません。CONTINUOUS
(プレビュー): この予約は、継続的クエリジョブに使用します。継続的クエリを使用するには、機能プレビューに登録する必要があります。ML_EXTERNAL
: この予約は、BigQuery の外部にあるサービスを使用する BigQuery MLCREATE MODEL
クエリに使用します。詳細については、BigQuery ML ワークロードへのスロットの割り当てをご覧ください。ML_EXTERNAL
予約は Standard Edition では使用できません。PIPELINE
: この予約は、読み込みジョブと抽出ジョブに使用します。デフォルトでは、読み込みジョブと抽出ジョブは無料であり、スロットの共有プールを使用します。BigQuery は、この共有プールの容量の可用性や、確認されるスループットを保証しません。大量のデータを読み込む場合は、スロットが使用可能になるまでジョブが待機することがあります。その場合は、専用スロットを購入して
PIPELINE
ジョブをそれらのスロットに割り当てることができます。[アイドル スロットを無視する] を有効にして、追加の専用予約を作成することをおすすめします。アイドル スロットの詳細については、アイドル スロットをご覧ください。読み込みジョブと抽出ジョブは、予約に割り当てられると無料のプールにアクセスできなくなります。無料のプールを使用する場合よりも優れたパフォーマンスを発揮できる十分な容量を予約に確保するには、リソースの使用率とジョブをモニタリングします。
特定の割り当てにスロットを割り当てることはできません。BigQuery スケジューラは、予約を使用するジョブのスロット割り当てを処理します。スロットの使用方法の詳細については、BigQuery での公平なスケジューリングをご覧ください。
予約とオンデマンド課金を組み合わせる
あるリージョンでは容量ベースを使用し、別のリージョンではオンデマンドを使用できます。デフォルトでは、すべてのプロジェクトでオンデマンド課金が使用されます。プロジェクト、フォルダ、または組織を予約に割り当てることで、特定のリージョンで容量ベースの課金を選択できます。たとえば、米国のマルチリージョンでスロット コミットメントを購入し、デフォルトの予約に組織を割り当てた場合、組織は米国のマルチリージョンでは容量ベースの課金になり、それ以外のリージョンではオンデマンド課金が継続されます。
特定のリージョンでは、明示的にプロジェクトを予約に割り当てることで、容量ベースの課金とオンデマンド課金を組み合わせて使用できます。予約に割り当てられていないプロジェクトでは、オンデマンド課金が継続されます。予約 ID none
を割り当てることにより、オンデマンド課金を使用するように、明示的にプロジェクトを割り当てることもできます。これは、フォルダまたは組織を予約に割り当てる際、そのフォルダまたは組織内の一部のプロジェクトでオンデマンド課金を使用したい場合に有効です。詳細については、プロジェクトを None に割り当てるをご覧ください。
オンデマンド課金のプロジェクトでは、コミットされた容量とは別の容量を使用します。これらのプロジェクトは、コミットされた容量の可用性に影響しません。
管理プロジェクトを指定する
コミットメントと予約を作成すると、 Google Cloud プロジェクトに関連付けられます。このプロジェクトによって BigQuery Reservations リソースが管理されます。このプロジェクトはこれらのリソースに対する請求のプライマリ ソースになります。このプロジェクトは、BigQuery ジョブまたはデータセットを保持するプロジェクトと同一である必要はありません。
予約リソース専用のプロジェクトを作成することをおすすめします。このプロジェクトは管理プロジェクトと呼ばれ、コミットメントの請求と管理を一元化します。このプロジェクトにわかりやすい名前を付けます(bq-COMPANY_NAME-admin
など)。次に、BigQuery ジョブを保持する個別のプロジェクトを 1 つ以上作成します。
管理プロジェクトと同じ組織リソース内のプロジェクトのみ、予約に割り当てることができます。管理プロジェクトが組織の一部でない場合は、そのプロジェクトのみがスロットを使用できます。
管理プロジェクトは、commit したスロットに応じて課金されます。スロットを使用するプロジェクトは、スロットではなくストレージに応じて課金されます。複数のプラン(1 年と 3 年など)を購入し、スロットを同じ管理プロジェクトに配置できます。
管理プロジェクトの数を制限することをおすすめします。制限することで、課金管理とスロットの割り当てが簡素化されます。可能であれば、組織のすべての予約に対して 1 つの管理プロジェクトを作成することを推奨します。複雑な組織では、管理要件や課金要件を満たすために、追加の管理プロジェクトが必要になる場合があります。
複数の管理プロジェクトを使用する
場合によっては、複数の管理プロジェクトを作成することをおすすめします。
- 複数の予約とコミットメントの費用を異なる組織部門に分割する。
- 1 つまたは複数のスロットのコミットメントを特定の予約セットにマッピングする。
アイドル スロットの容量は、異なる管理プロジェクトの予約間で共有されません。
BigQuery Google Cloud コンソールの [容量管理] ページでは、選択した管理プロジェクトの予約とコミットメントのみを表示できます。
スロット予約のサイズ設定
BigQuery は、リソースの増加に比例してスケールされるように設計されています。ワークロードによっては、容量が徐々に増加することで、得られるメリットも増えていく可能性があります。ただし、容量を追加するとコストも増加します。このため、最適な購入スロット数は、パフォーマンス、スループット、ユーティリティの要件によって異なります。
ベースライン スロットと自動スケーリング スロットを試して、スロットの最適な構成を決定できます。たとえば、500 ベースライン スロットでワークロードをテストし、次に 1,000 スロット、1,500 スロット、2,000 スロットと順にテストして、パフォーマンスへの影響を確認します。
スロットを購入して少なくとも 7 日間ワークロードを実行した後、スロット見積もりツールを使用してパフォーマンスを分析し、スロットの追加や削除の影響をモデル化できます。
選択した月額料金と一緒に、プロジェクトの現在のスロット使用量も確認できます。オンデマンド ワークロードでのスロットの上限は 2,000 スロットですが、INFORMATION_SCHEMA.JOBS*
ビュー、Cloud Logging、Jobs API、または BigQuery Audit のログを使用して、プロジェクトで実際に使用されているスロットの数を確認することが重要です。詳細については、予約をモニタリングするをご覧ください。
予約を使用してワークロードを管理する
BigQuery の予約を使用して、ワークロード、チーム、部門間で容量を割り当てることができます。このためには、予約を追加作成し、それらの予約にプロジェクトを割り当てます。予約はリソースの独立したプールであり、組織全体の空き容量を活用できるという利点があります。
たとえば、合計で 1,000 スロットの容量がコミットされており、データ サイエンス、ELT、BI という 3 つのワークロードの種類があるとします。
- 500 個のスロットを使用して
ds
予約を作成し、すべての重要な Google Cloud プロジェクトをds
予約に割り当てることができます。 - 300 個のスロットを使用して
elt
予約を作成し、ELT ワークロードに使用するプロジェクトをelt
予約に割り当てることができます。 - 200 個のスロットを使用して
bi
予約を作成し、BI ツールに接続されているプロジェクトをbi
予約に割り当てることができます。
ワークロード タイプ間で容量を分割するのではなく、個々のチームや部門用に予約を作成することもできます。
複数のリージョンの予約を管理する
予約はリージョン リソースです。あるリージョンで購入されたスロットと作成された予約は、他のリージョンでは使用できません。プロジェクト、フォルダ、組織はすべて、同じリージョン内で予約に割り当て、別のリージョンでオンデマンドで実行できます。別のリージョンの予約を管理するには、BigQuery の [容量管理] ページでリージョンを変更する必要があります。
- BigQuery コンソールで、[予約] をクリックします。
- [ロケーション] 選択ツールをクリックし、予約を管理するリージョンを選択します。
- リージョンを選択したら、スロットの購入、予約の作成、予約へのプロジェクトの割り当てを行えます。
複雑な組織で予約を管理する
予約は組織を対象にしたリソースです。予約を作成するときに、同じ Google Cloud組織内の任意のプロジェクトに容量を割り当てることができます。ほとんどの BigQuery ユーザーは、予約とコミットメントに単一の管理プロジェクトを使用します。管理プロジェクトには Cloud Billing アカウントが関連付けられており、容量に応じて課金されます。
ただし、複数の部門が独自の請求書を管理する複雑な組織の場合は、複数の管理プロジェクトを使用することをおすすめします。アイドル スロットは、同じ管理プロジェクトで作成された予約間でのみ共有できます。予約プロジェクトと管理プロジェクトの割り当てと上限に注意する必要があります。
複数の Google Cloud 組織を使用している場合は、組織ごとに少なくとも 1 つの管理プロジェクトを作成し、関連する管理プロジェクトで各組織の予約とコミットメントを管理する必要があります。組織間で容量を共有することはできません。
スロットのコミットメント
容量コミットメントは、指定した期間のスロットを購入する方法です。スロットは 50 スロット単位で、リージョン スロット割り当てまで購入できます。容量コミットメントは任意ですが、定常状態のワークロードの費用を節約できます。作成できるコミットメントの数に上限はありません。課金は、コミットメントの購入が正常に終了した時点から始まります。最新の料金情報については、容量コミットメント料金をご覧ください。
年間契約。365 日間分のコミットメントを購入します。365 日後に、更新または別のタイプのコミットメント プランへの変更のいずれかを選択できます。
3 年間の確約利用。3 年間のコミットメントを購入します。3 年(1,095 日)後に、更新または別のタイプのコミットメント プランへの変更のいずれかを選択できます。
コミットメント期間の終了時に、選択した更新プランに基づいてコミットメントが更新されます。
年間または 3 年間コミットメント プランの料金は月単位で請求されます。ただし、コミットメント料金はコミットメント期間全体を対象としており、月単位でキャンセルすることはできません。使用量は請求レポートで毎日更新され、いつでも確認できます。
スロット コミットメントは容量の可用性の影響を受けます。スロット コミットメントの購入は必ずしも成功するとは限りません。ただし、コミットメントの購入が完了すると、確保した容量はコミットメントの有効期限が切れるまで利用できます。
予約を作成する前にスロット コミットメントを購入すると、便宜上 default
という名前の予約が自動的に作成されます。default
予約には特別な動作はありません。必要に応じて追加の予約を作成するか、デフォルトの予約を使用できます。
コミットメントの更新
コミットメントの購入時に更新プランを選択します。コミットメントの更新プランは、有効期限が終了するまでの間はいつでも変更できます。次の更新プランを利用できます。
- なし。コミットメントが終了すると、コミットメントは削除されます。予約には影響しません。
- 年間。コミットメント期間の終了後、コミットメントはさらに 1 年間更新されます。
- 3 年間。コミットメント期間の終了後、コミットメントはさらに 3 年間更新されます。
コミットメントの購入と更新については、容量コミットメントを作成するをご覧ください。
たとえば、2019 年 10 月 5 日の午後 6 時に年間コミットメントを購入すると、その時点から課金が開始されます。2020 年 10 月 4 日の午後 6 時以降、コミットメントを削除または更新できます(2020 年はうるう年です)。2020 年 10 月 4 日午後 6 時まで、更新プランを次のように変更できます。
- 年間コミットメントの更新の場合、2020 年 10 月 4 日午後 6 時にコミットメントが更新され、さらに 1 年間有効になります。
- 3 年間のコミットメントに更新する場合、2020 年 10 月 4 日の午後 6 時にコミットメントが更新され、さらに 3 年間有効になります。
注: 更新プロセスは、コミットメントの有効期限が切れてから最大で 1 時間ほどかかることがあります。たとえば、コミットメントが 2020 年 10 月 4 日午後 6 時に期限切れになった場合、更新されたコミットメント レコードは 2020 年 10 月 4 日午後 6 時から午後 7 時の間にシステムに表示されます。作成されたコミットメントの有効な開始時刻が午後 6 時であるため、このデータ更新期間内はオンデマンド料金は発生しません。
コミットメントの有効期限
作成したコミットメントは削除できません。年間コミットメントまたは 3 年間のコミットメントを削除するには、更新プランを NONE
に設定します。期限切れになったコミットメントは、自動的に削除されます。コミットメントの有効期限の詳細については、コミットメントの有効期限をご覧ください。
コミットメントを誤って購入した場合や、コミットメントの構成を間違えた場合は、Cloud Billing のサポートにお問い合わせください。
予約の制限事項
- 1 つの組織の予約を他の組織と共有することはできません。
- 組織ごとに個別の予約と個別の管理プロジェクトを使用する必要があります。
- 各組織につき、アクティブなコミットメントを持つ管理プロジェクトを1 つのロケーションに最大 10 個作成できます。
- アイドル状態の容量は、組織間や単一の組織内の異なる管理プロジェクト間で共有できません。
- コミットメントと予約はリージョン リソースです。あるリージョンまたはマルチリージョンで購入したコミットメントは、他のリージョンまたはマルチリージョンでは使用できません。単一リージョン ロケーションがマルチリージョン ロケーションに含まれている場合も同様です。たとえば、
EU
マルチリージョンで購入したコミットメントをeurope-west4
の予約に使用することはできません。 - コミットメントと予約は、あるリージョンまたはマルチリージョンから別のリージョンまたはマルチリージョンに移動できません。
- ある管理プロジェクトで購入したコミットメントを別の管理プロジェクトに移動することはできません。
- あるエディションで購入したコミットメントは、別のエディションの予約で使用できません。
- アイドル スロットは、異なるエディションの予約間で共有されません。
- 自動スケーリングされたスロットは、不要になったときにスケールダウンするため、共有できません。