スロット予約の操作
BigQuery Reservations API を使用すると、専用スロット(コミットメント)を購入し、スロットのプール(予約)を作成して、プロジェクトと組織をそれらの予約に割り当てることができます。これらのコンセプトの詳細については、Reservations の概要をご覧ください。BigQuery が提供するコミットメント プランについては、容量コミットメントをご覧ください。
Reservations を使用すると、コミットメントから一定数の専用のスロットをワークロードに割り当てることができます。たとえば、本番環境のワークロードがスロット用のテスト ワークロードと競合するのを回避することが必要な場合が考えられます。prod
という名前の予約を作成し、本番環境のワークロードをこの予約に割り当てることができます。詳細については、Reservations をご覧ください。
予約を作成する
必要な権限
予約を作成するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.create
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
専用スロットを使用して予約を作成する
Console
Cloud コンソールで、BigQuery ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約を作成] をクリックします。
[予約名] フィールドに、予約の名前を入力します。
[ロケーション] プルダウン リストで、ロケーションを選択します。
[スロットの割り当て] に、予約のスロットの数を入力します。
[保存] をクリックします。
新しい予約が [予約] タブに表示されます。
SQL
CREATE RESERVATION
ステートメントを使用して、予約を作成します。
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION .RESERVATION_NAME` AS JSON """{ "slot_capacity": NUMBER_OF_SLOTS }"""
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。NUMBER_OF_SLOTS
は、予約に割り当てるスロットの数です。コミットメントには、十分な数の未割り当てのスロットが必要です。RESERVATION_NAME
は、予約の名前です。先頭と末尾は英小文字または数字にしてください。使用できるのは英小文字、数字、ダッシュのみです。CREATE RESERVATION
ステートメントの詳細については、データ定義言語(DDL)リファレンスのCREATE RESERVATION
ステートメントをご覧ください。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
bq
予約を作成するには、--reservation
フラグを指定した bq mk
コマンドを使用します。
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_SLOTS \ --ignore_idle_slots=false \ RESERVATION_NAME
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。NUMBER_OF_SLOTS
は、予約に割り当てるスロットの数です。コミットメントには、十分な数の未割り当てのスロットが必要です。RESERVATION_NAME
は、予約の名前です。
--ignore_idle_slots
フラグの詳細については、アイドル スロットをご覧ください。デフォルト値は false
です。
Python
予約を更新する
容量コミットメントには、次の更新を行うことができます。
- 予約サイズを変更するには、スロットを追加または削除します。
- この予約のクエリがアイドル スロットを使用するかどうかを構成します。
必要な権限
予約を更新するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.update
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約のサイズを変更する
既存の予約に対して、スロットを追加または削除できます。
Console
Cloud コンソールで、BigQuery ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
削除する予約を見つけます。
[アクション] オプションを展開します。
[編集] をクリックします。
[スロットの編集] ダイアログで、スロットの数を入力します。
[保存] をクリックします。
bq
予約のサイズを更新するには、--reservation
フラグを指定した bq update
コマンドを使用します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_SLOTS \ --reservation RESERVATION_NAME
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。NUMBER_OF_SLOTS
は、予約に割り当てるスロットの数です。RESERVATION_NAME
は、予約の名前です。
Python
クエリでアイドル スロットを使用するかどうかを構成する
--ignore_idle_slots
フラグは、予約で実行中のクエリから他の予約のアイドル スロットを使用できるかどうかを制御します。詳細については、アイドル スロットをご覧ください。この構成は既存の予約で更新できます。
bq
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
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。RESERVATION_NAME
は、予約の名前です。
アイドル スロット構成を一覧表示する
予約のアイドル スロットの設定を一覧表示するには、次のようにします。
SQL
INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
ビューの ignore_idle_slots
列をクエリします。
SELECT reservation_name, ignore_idle_slots FROM `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。
bq
bq ls
コマンドを使用し、--reservation
フラグを指定します。
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。
ignoreIdleSlots
フィールドには、構成設定が含まれています。
予約の削除
予約を削除すると、その予約のスロットで実行中のジョブが失敗します。エラーが発生しないようにするには、実行中のジョブを完了させてから予約を削除してください。
必要な権限
予約を削除するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する
bigquery.reservations.delete
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約の削除
Console
Cloud コンソールで、BigQuery ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
削除する予約を見つけます。
[アクション] オプションを展開します。
[削除] をクリックします。
[予約の削除] ダイアログで、[削除] をクリックします。
SQL
DROP RESERVATION
ステートメントを使用して、予約を削除します。
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。RESERVATION_NAME
は、予約の ID です。DROP RESERVATION
ステートメントの詳細については、データ定義言語(DDL)リファレンスのDROP RESERVATION
ステートメントをご覧ください。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
bq
bq rm
コマンドに --reservation
フラグを指定して、予約を削除します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。RESERVATION_NAME
は、予約の名前です。
Python