スロットの自動スケーリングの概要

スロットの自動スケーリングを使用するように構成した予約では、ワークロードの需要に合わせて、割り当てられる容量が自動的にスケーリングされます。ワークロードの増減に合わせて、BigQuery はスロットを適切なレベルに動的に調整します。スロットの自動スケーリングを使用した予約は、BigQuery エディションでのみ使用できます。

自動スケーリングの予約を使用する

自動スケーリングの予約を作成する前に、スロット コミットメントを購入する必要はありません。スロット コミットメントでは、一貫して使用されるスロットに対して割引料金が適用されますが、自動スケーリングの予約ではこれはオプションです。自動スケーリングの予約を作成するには、予約に最大数のスロット(最大予約サイズ)を割り当てます。自動スケーリング スロットの最大数は、最大予約サイズから、予約に割り当てられたオプションのベースライン スロットをすべて差し引くことで特定できます。

自動スケーリングの予約を作成する場合は、次の点を考慮してください。

  • BigQuery は、ジョブの実行に必要なスロット数に達するか、予約に使用できるスロットの最大数に達するまで、予約を 100 の倍数でスケーリングします。
  • スケールアップは見積もりに基づいており、プロビジョニングが過剰または過少になる場合があります。たとえばオートスケーラーは、必要なスロットが 400 のみのときに 500 スロットまでスケーリングする、またはスケーリングを行わずにワークロードを処理できるときに、少量をスケーリングしようとする場合があります。
  • 自動スケーリングされたスロットには、スケールアップの際に、関連するエディションの容量コンピューティング料金が適用されます。請求は、使用したスロットの数ではなく、スケーリングされたスロットの数に対して行われます。この料金は、BigQuery をスケールアップするジョブが失敗した場合にも適用されます。
  • スロット数は常に 100 の倍数でスケーリングされますが、1 ステップで 100 を超えるスロットがスケーリングされる場合があります。たとえば、ワークロードで 450 スロットを追加する必要がある場合、BigQuery は容量要件を満たすために一度に 500 スロットをスケーリングしようとする可能性があります。
  • 割り当てられたスロット数が必要なスロット数を超えており、自動スケーリングの容量がしばらく安定したままの場合、BigQuery はスケールダウンを行います。

自動スケーリングの操作方法については、スロットの自動スケーリングの操作をご覧ください。

ベースライン スロットと自動スケーリング スロットとともに予約を使用する

最大予約サイズを指定するだけでなく、必要に応じて予約あたりのスロットのベースライン数を指定できます。ベースラインは予約に常に割り当てられる最小スロット数であり、それらは常に課金されます。自動スケーリング スロットは、すべてのベースライン スロット(と、該当する場合はアイドル スロット)が使用された後にのみ追加されます。1 つの予約のアイドル ベースライン スロットは、容量を必要とする他の予約と共有できます。

予約のベースライン スロット数は数分ごとに増やすことができます。ベースライン スロットを減らしたい場合、ベースライン スロット容量が最近変更され、ベースライン スロットがコミット済みスロットを超過する場合は、1 時間に 1 回に制限されます。それ以外は、ベースライン スロットを数分ごとに減らすことができます。

ベースライン スロットと自動スケーリング スロットは、最近のワークロードに基づいて容量を提供することを目的としています。最近のワークロードとかなり異なる大規模のワークロードが予想される場合は、ワークロードの容量に対応する自動スケーリング スロットをあてにするのではなく、イベントの前にベースライン容量を増やすことをおすすめします。

予約にベースライン スロットがない場合、または他の予約からアイドル スロットを借用するように構成されていない場合、BigQuery はスケーリングを試みます。それ以外の場合、スケーリングの前にベースライン スロットを十分に活用する必要があります。

予約では、次の優先度でスロットを使用および追加します。

  1. ベースライン スロット。
  2. アイドル スロットの共有(有効になっている場合)。予約では、同じエディションと同じリージョンで作成された他の予約のアイドル ベースライン スロットまたはコミット済みスロットのみを共有できます。
  3. 自動スケーリング スロット。

次の例では、スロットは指定されたベースラインの量からスケーリングされます。etl 予約と dashboard 予約は、それぞれベースライン サイズが 700 スロットと 300 スロットです。

コミットメントのない自動スケーリングの例。

この例では、etl 予約は 1,300 スロットまでスケーリングできます(700 ベースライン スロット + 600 自動スケーリング スロット)。dashboard 予約が使用されていない場合、etl 予約は、ジョブが何も実行されていなければ dashboard 予約からの 300 スロットを使用できるため、使用できるスロット数は最大 1,600 になります。

dashboard 予約は、1,100 スロットまでスケーリングできます(300 ベースライン スロット + 800 自動スケーリング スロット)。etl 予約が完全にアイドル状態の場合、dashboard 予約は、最大で 1,800 スロットまでスケーリングできます(300 ベースライン スロット + 800 自動スケーリング スロット + etl 予約の 700 アイドル スロット)。

etl 予約で常に使用可能な 700 を超えるベースライン スロットが必要な場合、次の順序でスロットの追加が試されます。

  1. 700 のベースライン スロット。
  2. dashboard 予約の 300 ベースライン スロットを使用する、アイドル スロットの共有。予約は、同じエディションで作成された他の予約とのみ、アイドル状態のベースライン スロットを共有できます。
  3. 最大予約サイズまでの 600 の追加スロットのスケールアップ。

スロット コミットメントの使用

次の例は、容量コミットメントを使用したスロットの自動スケーリングを示しています。

自動スケーリングの例

予約ベースラインと同様に、スロット コミットメントでは、すべての予約で使用可能な固定数のスロットを割り当てることが可能になります。ベースライン スロットとは異なり、期間中はコミットメントを削減できません。スロット コミットメントはオプションですが、ベースライン スロットが長期間必要な場合は、費用を節約できます。

この例では、容量コミットメント スロットに対して事前定義されたレートで課金されます。自動スケーリングが有効になり、予約がアップスケールされた状態になると、自動スケーリング スロットの数に対してスケーリング料金が課金されます。自動スケーリング料金では、使用されたスロット数ではなく、スケーリングされたスロット数に対して課金されます。

使用可能なスロットの最大数

予約で使用できるスロットの最大数は、ベースライン スロット、自動スケーリング スロットの最大数、および同じエディションで作成され、ベースライン スロットで消費されていないコミットメントのスロットを合計することで計算できます。前の画像の例では、次のように設定されています。

  • 年間 1,000 スロットの容量コミットメント。それらのスロットは、etl 予約と dashboard 予約でベースライン スロットとして割り当てられます。
  • etl 予約に割り当てられる 700 のベースライン スロット。
  • dashboard 予約に割り当てられる 300 のベースライン スロット。
  • etl 予約の 600 の自動スケーリング スロット。
  • dashboard 予約の 800 の自動スケーリング スロット。

etl 予約の場合、使用可能なスロットの最大数は etl ベースライン スロット(700)、dashboard ベースライン スロット(すべてのスロットがアイドル状態の場合、300)、自動スケーリング スロットの最大数(600)の合計に等しくなります。したがって、この例では etl 予約で使用できるスロットの最大数は 1,600 です。この数は容量コミットメントの数を超えています。

次の例では、年間のコミットメントが割り当てられたベースライン スロット数を上回っています。

使用可能なスロットの計算

この例でのスロット数は以下の通りです。

  • 年間 1,600 スロットの容量コミットメント。
  • 1,500 (500 の自動スケーリング スロットを含む)の最大予約サイズ。
  • etl 予約に割り当てられる 1,000 のベースライン スロット。

予約に使用できるスロットの最大数は、ベースライン スロット(1,000)、ベースライン スロット専用ではないコミットされたアイドル スロット(1,600 の年間スロット - 1,000 のベースライン スロット = 600)、自動スケーリング スロットの数(500)の合計に等しくなります。したがって、この予約のスロットの取りうる最大数は 2,100 です。自動スケーリングされるスロットは、容量コミットメントを超える追加スロットです。

自動スケーリングのベスト プラクティス

  1. オートスケーラーを初めて使用するときは、自動スケーリング スロットの数を、過去および予想されるパフォーマンスに基づいて妥当な数に設定します。予約を作成したら、失敗率、パフォーマンス、請求をアクティブにモニタリングして、必要に応じて自動スケーリング スロットの数を調整します。

  2. 使用されたスロット数ではなく、スケーリングされたスロット数に対して課金されることに注意してください。自動スケーリング スロットの最大数が大きすぎる場合、BigQuery が必要以上にスケーリングを行い、追加費用が発生する可能性があります。

    たとえば、ジョブが一度に多数のスロットを使用しても、必要とするのが大幅に少数のスロットのみであることが考えられます。BigQuery は使用されていないスロットを直ちに解放しないため、予約内の他のジョブがそれらのスロットを使用できない場合に使用率が低下する可能性があります。予約の最大値を低減すると、割り当てられるスロットの最大数が減少し、ジョブスロットの使用量の急増が緩和され、割り当て済みスロットのジョブ使用率が改善されます。

  3. スロットの使用量は、ベースラインとスケーリングされたスロットの合計を超える場合があります。ベースラインとスケーリングされたスロットの合計を超えるスロットの使用量に対しては課金されません。

  4. オートスケーラーは、複数の同時実行クエリを持つワークロードなど、大規模で時間がかかるワークロードに最適です。クエリがキャッシュを使用するかどうかにかかわらず、一度に 1 つずつクエリをバックエンドに送信しないでください。ベースライン スロットがない場合、予期しないスケーリングが発生し、コストが高くなる可能性があります。

  5. BigQuery の自動スケーリングは、容量の可用性の影響を受けます。BigQuery は、過去の使用状況に基づいてお客様の容量需要を満たそうとします。容量を保証するために、オプションのスロット ベースライン(予約で保証されるスロット数)を設定できます。ベースラインを使用すると、スロットは直ちに利用可能になり、使用するかどうかにかかわらず課金されます。大規模な需要(祝日におけるトラフィックの急増など)のために容量を確保するには、数週間前に BigQuery チームにお問い合わせください。

  6. ベースライン スロットに対しては常に課金されます。容量コミットメントが期限切れになった場合は、不要な料金が発生しないように、予約のベースライン スロット数を手動で調整する必要があります。たとえば、100 スロットの 1 年間のコミットメントと 100 ベースライン スロットの予約があるとします。コミットメントが期限切れになり、更新プランはありません。コミットメントが期限切れになると、従量課金制で 100 ベースライン スロットに対して支払いを行うことになります。

自動スケーリングのモニタリング

管理リソースグラフでスロット使用量をモニタリングすると、グラフでは使用スロット数がアライメント期間に対して平準化されるため、スケーリング済みスロットがスロット使用量よりも大幅に多く表示されることがあります。自動スケーリングのスロット使用状況をより詳しく確認するには、期間オプションを短くします。これにより、アライメント期間が短い間隔に自動的に更新されます。

次の例のグラフでは、ワークロードの需要よりもはるかに多いスケーリング済みスロットが表示されています。

アライメント期間は 1 分間隔に設定されており、スロット使用量の需要よりも多くのスケーリング済みスロットが表示されています。

期間オプションを短くしてアライメント期間が 2 秒になるようにすると、オートスケーラーがワークロードの需要に合わせてスケーリングしていることを確認でき、より正確なデータが表示されます。期間オプションを調整するには、期間オプションの開始範囲と終了範囲をドラッグします。最も正確なワークロードの需要データを表示するには、[指標] リストから [p90] または [p99] を選択します。

アライメント期間が 2 秒間隔に設定されており、スケーリング済みスロットがワークロードの需要に適したものになっています。

自動スケーリングの使用状況を最も正確に把握するには、1~15 秒のアライメント期間を使用します。管理リソースグラフのアライメント期間の詳細については、期間オプションをご覧ください。

スロット使用状況の確認については、管理リソースグラフを表示するをご覧ください。

割り当て

最大予約サイズの合計がスロット割り当てを超えないようにしてください。

割り当ての詳細については、割り当てと上限をご覧ください。

次のステップ