以前のスロット予約を使用する
BigQuery Reservation API を使用すると、専用スロットを購入し(コミットメントと呼ぶ)、スロットのプールを作成し(予約と呼ぶ)、それらの予約にプロジェクト、フォルダ、組織を割り当てることができます。
予約を使用すると、一定数の専用のスロットをワークロードに割り当てることができます。たとえば、本番環境のワークロードがスロット用のテスト ワークロードと競合するのを回避することが必要な場合が考えられます。prod
という名前の予約を作成し、本番環境のワークロードをこの予約に割り当てることができます。詳細については、Reservations をご覧ください。
予約を作成
必要な権限
予約を作成するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.create
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
専用スロットを使用して予約を作成する
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約を作成] をクリックします。
[予約名] フィールドに、予約の名前を入力します。
[ロケーション] プルダウン リストで、ロケーションを選択します。
[容量モデル] セクションで、容量モデルを選択します。
[フラットレート] オプションを選択した場合は、[ベースライン スロット] に予約用のスロット数を入力します。
- [最大予約サイズセレクタ] リストで、最大予約サイズを選択します。
省略可: [ベースライン スロット] フィールドに、予約用のベースライン スロット数を入力します。指定したスロットの容量のみを使用するには、[アイドル スロットを無視する] 切り替えをクリックします。
使用可能な自動スケーリング スロットの数は、最大予約サイズの値からベースライン スロットの値を差し引くことで決まります。たとえば、ベースライン スロットを 100 個、最大予約サイズを 400 個として予約を作成した場合、その予約には 300 個の自動スケーリング スロットがあります。ベースライン スロットの詳細については、ベースライン スロットと自動スケーリング スロットを使用した予約の使用をご覧ください。
アイドル スロットの共有を無効にするには、[アイドル スロットを無視する] 切り替えをクリックします。
スロットの内訳は、[費用見積もり] テーブルに表示されます。 予約の概要が [容量の概要] テーブルに表示されます。
[保存] をクリックします。
新しい予約が [予約] タブに表示されます。
SQL
予約を作成するには、DDL ステートメント CREATE RESERVATION
を使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, );
以下を置き換えます。
ADMIN_PROJECT_ID
: 予約リソースを所有する管理プロジェクトのプロジェクト IDLOCATION
: 予約のロケーション。BigQuery Omni のロケーションを選択した場合、エディション オプションは Enterprise エディションに限定されます。RESERVATION_NAME
: 予約の名前先頭と末尾は英小文字または数字にしてください。使用できるのは英小文字、数字、ダッシュのみです。
NUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースライン スロットの数。slot_capacity
オプションとedition
オプションを同じ予約内で設定することはできません。EDITION
: 予約のエディション。予約をエディションに割り当てると、機能と料金が変更されます。詳細については、BigQuery エディションの概要をご覧ください。NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約を作成するには、bq mk
コマンドを使用し、--reservation
フラグを指定します。
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーション。BigQuery Omni のロケーションを選択した場合、エディション オプションは Enterprise エディションに限定されます。NUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースラインのスロット数。RESERVATION_NAME
: 予約の名前EDITION
: 予約のエディション。予約をエディションに割り当てると、機能と料金が変更されます。詳細については、BigQuery エディションの概要をご覧ください。NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
--ignore_idle_slots
フラグの詳細については、アイドル スロットをご覧ください。デフォルト値は false
です。
Python
予約を更新する
予約に対して以下の更新を行うことができます。
- 予約サイズを変更するには、スロットを追加または削除します。
- この予約のクエリがアイドル スロットを使用するかどうかを構成します。
- 予約に割り当てるベースライン スロットまたは自動スケーリング スロットの数を変更する。
必要な権限
予約を更新するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.update
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約のサイズを変更する
既存の予約に対して、スロットを追加または削除できます。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
更新する予約を見つけます。
[アクション] オプションを展開します。
[編集] をクリックします。
[最大予約サイズ セレクタ] ダイアログで、最大予約サイズを入力します。
[ベースライン スロット数] フィールドに、ベースライン スロット数を入力します。
[保存] をクリックします。
SQL
予約のサイズを変更するには、ALTER RESERVATION SET OPTIONS
データ定義言語(DDL)ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
ALTER RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` SET OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, );
以下を置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約のサイズを更新するには、bq update
コマンドを使用し、--reservation
フラグを指定します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_BASELINE_SLOTS \ --reservation RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーションNUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースラインのスロット数。RESERVATION_NAME
: 予約の名前
Python
クエリでアイドル スロットを使用するかどうかを構成する
--ignore_idle_slots
フラグは、予約で実行中のクエリから他の予約のアイドル スロットを使用できるかどうかを制御します。詳細については、アイドル スロットをご覧ください。この構成は既存の予約で更新できます。
予約を更新するには、bq update
コマンドを使用し、--reservation
フラグを指定します。次の例では、--ignore_idle_slots
を true
に設定しています。つまり、予約は、その予約に割り当てられたスロットのみを使用します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --ignore_idle_slots=true \ --reservation RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーションRESERVATION_NAME
: 予約の名前
アイドル スロット構成を一覧表示する
予約のアイドル スロットの設定を一覧表示するには、次のようにします。
SQL
INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
ビューの ignore_idle_slots
列のクエリを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
SELECT reservation_name, ignore_idle_slots FROM `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
--reservation
フラグを指定して bq ls
コマンドを使用します。
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION
以下を置き換えます。
ignoreIdleSlots
フィールドには、構成設定が含まれています。
予約の削除
予約を削除すると、その予約のスロットで実行中のジョブが失敗します。エラーが発生しないようにするには、実行中のジョブを完了させてから予約を削除してください。
必要な権限
予約を削除するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.delete
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約の削除
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
削除する予約を見つけます。
[アクション] オプションを展開します。
[削除] をクリックします。
[予約の削除] ダイアログで、[削除] をクリックします。
SQL
予約を削除するには、DDL ステートメント DROP RESERVATION
を使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
以下を置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約を削除するには、bq rm
コマンドを使用し、--reservation
フラグを指定します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
以下を置き換えます。
Python
BigQuery Reservation API を VPC Service Controls に追加する
BigQuery Reservation API は VPC Service Controls をサポートしています。 BigQuery Reservation API を VPC Service Controls と統合するには、サービス境界を作成するの手順に沿って、保護されたサービスに BigQuery Reservation API を追加します。
サービス境界は、境界で指定された管理プロジェクト内の予約、コミットメント、割り当てへのアクセスを保護します。割り当てを作成する場合、VPC Service Controls は管理プロジェクトと割り当て先のプロジェクト、フォルダ、組織を保護します。