使用運算單元保留功能
透過 BigQuery Reservation API,您可以購買專屬運算單元 (稱為「承諾」)、建立運算單元集區 (稱為「預留項目」),以及將專案、資料夾和機構指派給這些預留項目。
保留項目可讓您為工作負載指派專屬的運算單元數量。舉例來說,您可能不希望實際工作環境工作負載與測試工作負載爭奪運算單元。您可以建立名為 prod
的預留項目,並將生產工作負載指派給這個預留項目。詳情請參閱「預留項目」。
建立預留項目
所需權限
如要建立預留項目,您必須具備下列身分與存取權管理 (IAM) 權限:
bigquery.reservations.create
,該管理專案會維護承諾使用合約的所有權。
下列預先定義的 IAM 角色都具備這項權限:
BigQuery Resource Editor
BigQuery Resource Admin
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。
使用專屬運算單元建立預留項目
選取下列選項之一:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「容量管理」。
按一下「建立預留項目」。
在「Reservation name」(預留項目名稱) 欄位中,輸入預留項目的名稱。
在「位置」清單中選取位置。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。
從「Edition」(版本) 清單中選取版本。BigQuery 版本功能 (例如自動調度) 僅適用於該版本。詳情請參閱 BigQuery 版本簡介。
在「預留項目大小選取器」清單中,選取預留項目大小上限。
選用:在「基準運算單元」欄位中,輸入保留項目的基準運算單元數量。
可用的自動調度資源運算單元數量,取決於「基準運算單元」值減去「預留項目大小上限」。舉例來說,如果您建立的預留項目有 100 個基準運算單元,且預留項目大小上限為 400,則預留項目會有 300 個自動調度運算單元。如要進一步瞭解基準運算單元,請參閱「搭配基準和自動調度資源運算單元使用預留項目」。
如要停用閒置的運算單元共用功能,並只使用指定的運算單元容量,請按一下「忽略閒置的運算單元」切換鈕。
如要展開「進階設定」部分,請按一下
展開箭頭。選用:如要設定目標工作並行,請按一下「覆寫自動目標工作並行設定」切換鈕,然後輸入「目標工作並行」。
「費用估算」表格會顯示時段明細。 「運算能力摘要」表格會顯示預訂摘要。
按一下 [儲存]。
新預訂的時段會顯示在「預訂時段」分頁中。
SQL
如要建立預留項目,請使用 CREATE RESERVATION
DDL 陳述式。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, edition = EDITION, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
取代下列項目:
ADMIN_PROJECT_ID
:擁有預留資源的管理專案專案 IDLOCATION
:預訂的地點。如果選取 BigQuery Omni 位置,版本選項會限制為 Enterprise 版。RESERVATION_NAME
:預留項目的名稱名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。
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 \ --edition=EDITION \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS --scaling_mode=SCALING_MODE RESERVATION_NAME
更改下列內容:
ADMIN_PROJECT_ID
:專案 IDLOCATION
:預訂的地點。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。NUMBER_OF_BASELINE_SLOTS
:要分配給預留項目的基準運算單元數量RESERVATION_NAME
:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。EDITION
:預訂的發行版本。將預留項目指派給版本時,功能和價格會有所變更。詳情請參閱 BigQuery 版本簡介。NUMBER_OF_AUTOSCALING_SLOTS
:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。這無法透過--max_slots
或--scaling_mode
旗標設定。MAXIMUM_NUMBER_OF_SLOTS
:預留項目可使用的運算單元數量上限。這個值必須使用--scaling_mode
標記設定 (預先發布版)。SCALING_MODE
:預訂的縮放模式。選項包括ALL_SLOTS
、IDLE_SLOTS_ONLY
或AUTOSCALE_ONLY
。這個值必須使用--scaling_mode
標記設定 (預先發布版)。
如要瞭解 --ignore_idle_slots
旗標,請參閱「閒置運算單元」。預設值為 false
。
Terraform
使用 google_bigquery_reservation
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會建立名為 my-reservation
的預訂:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf
,例如main.tf
。在本教學課程中,這個檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。
將範例程式碼複製到新建立的
main.tf
。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個方法。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
Python
建立可預測的預留項目
建立設有運算單元數量上限的預留項目之前,請務必先啟用以預留項目為準的公平性。
啟用以預訂為準的公平性機制
如要啟用以預訂為準的公平性,請將 enable_reservation_based_fairness
旗標設為 true
。
如要更新專案的預留項目公平性,您必須擁有bigquery.config.update
專案的權限,該專案會維護預留項目的擁有權。預先定義的 BigQuery Admin
角色具備這項權限。
如要進一步瞭解如何更新專案的預設設定,請參閱「管理設定」。
ALTER PROJECT `PROJECT_NAME` SET OPTIONS ( `region-LOCATION.enable_reservation_based_fairness`= true);
更改下列內容:
建立可預測的預留項目
如要建立設有運算單元數量上限的預留項目,請選取下列其中一個選項:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽面板中,前往「容量管理」部分,然後按一下「建立預留項目」。
在「Reservation name」(預留項目名稱) 欄位中,輸入預留項目的名稱。
在「位置」清單中選取位置。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。
從「Edition」(版本) 清單中選取版本。自動調度資源功能僅適用於特定版本。詳情請參閱瞭解 BigQuery 版本。
在「預留項目大小選取器」清單中,選取預留項目大小上限。
選用:在「基準運算單元」欄位中,輸入保留項目的基準運算單元數量。
可用的自動調度資源運算單元數量,取決於「基準運算單元」值減去「預留項目大小上限」。舉例來說,如果您建立的預留項目有 100 個基準運算單元,且預留項目大小上限為 400,則預留項目會有 300 個自動調度運算單元。如要進一步瞭解基準運算單元,請參閱「搭配基準和自動調度資源運算單元使用預留項目」。
如要停用閒置的運算單元共用功能,並只使用指定的運算單元容量,請按一下「忽略閒置的運算單元」切換鈕。
如要展開「進階設定」部分,請按一下
展開箭頭。- 在「如何使用閒置的運算單元?」清單中,選取設定選項。
「費用估算」表格會顯示時段明細。 「運算能力摘要」表格會顯示預訂摘要。
按一下 [儲存]。
新預訂的時段會顯示在「預訂時段」分頁中。
bq
如要建立可預測的預訂項目,請使用 bq mk
指令搭配 --reservation
旗標,並設定 max_slots
和 scaling_mode
的值:
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS \ --scaling_mode=SCALING_MODE RESERVATION_NAME
更改下列內容:
ADMIN_PROJECT_ID
:專案 IDLOCATION
:預訂的地點。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。NUMBER_OF_BASELINE_SLOTS
:要分配給預留項目的基準運算單元數量RESERVATION_NAME
:預留項目名稱EDITION
:預訂的發行版本。將預留項目指派給版本時,功能和價格會有所變更。詳情請參閱 BigQuery 版本簡介。MAXIMUM_NUMBER_OF_SLOTS
:預留項目可使用的運算單元數量上限。這個值必須使用--scaling_mode
標記設定 (預先發布版)。SCALING_MODE
:預訂的縮放模式。選項包括ALL_SLOTS
、IDLE_SLOTS_ONLY
或AUTOSCALE_ONLY
。這個值必須使用--scaling_mode
標記設定 (預先發布版)。
如要瞭解 --ignore_idle_slots
旗標,請參閱「閒置運算單元」。預設值為 false
。
如要進一步瞭解可預測的預留項目,請參閱「可預測的預留項目」。
更新預訂
你可以對預訂項目進行下列更新:
- 新增或移除運算單元,即可變更預訂大小。
- 設定此預留項目中的查詢是否要使用閒置運算單元。
- 變更分配給預留項目的基準或自動調度運算單元數量。
- 設定目標工作並行。
所需權限
如要更新預留項目,您需要下列身分與存取權管理 (IAM) 權限:
bigquery.reservations.update
,該管理專案會維護承諾使用合約的所有權。
下列預先定義的 IAM 角色都具備這項權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。
變更預留項目大小
你可以為現有預約新增或移除時段。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「容量管理」。
按一下「運算單元預留項目」分頁標籤。
找出要更新的預訂。
展開「動作」
選項。按一下 [編輯]。
在「預留項目大小上限選取器」對話方塊中,輸入預留項目大小上限。
在「Baseline slots」(基準運算單元) 欄位中,輸入基準運算單元數量。
如要展開「進階設定」部分,請按一下
展開箭頭。選用:如要設定目標工作並行,請按一下「覆寫自動目標工作並行設定」切換鈕,然後輸入「目標工作並行」。
按一下 [儲存]。
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, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
取代下列項目:
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
如要更新預訂大小,請使用 bq update
指令並加上 --reservation
標記:
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_BASELINE_SLOTS \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --reservation RESERVATION_NAME
更改下列內容:
ADMIN_PROJECT_ID
:專案 IDLOCATION
:預訂的地點NUMBER_OF_BASELINE_SLOTS
:要分配給預留項目的基準運算單元數量RESERVATION_NAME
:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。NUMBER_OF_AUTOSCALING_SLOTS
:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。
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
:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。
列出閒置時段設定
如要列出預留項目的閒置時段設定,請執行下列操作:
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
請使用 bq ls
指令,並加上 --reservation
旗標:
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION
更改下列內容:
ignoreIdleSlots
欄位包含設定。
刪除保留項目
刪除預留項目後,目前使用該預留項目運算單元執行的任何工作都會失敗。為避免發生錯誤,請先讓執行中的工作完成,再刪除預訂。
所需權限
如要刪除預留項目,您需要下列身分與存取權管理 (IAM) 權限:
bigquery.reservations.delete
,該管理專案會維護承諾使用合約的所有權。
下列預先定義的 IAM 角色都具備這項權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。
刪除預留項目
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「容量管理」。
按一下「預訂」分頁標籤。
找出要刪除的預訂。
展開「動作」
選項。點選「刪除」。
按一下「Delete reservation」(刪除保留項目) 對話方塊中的「Delete」(刪除)。
SQL
如要刪除預留位置,請使用 DROP RESERVATION
DDL 陳述式。
前往 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-wlm-feedback@google.com。
您可以控管哪些使用者可存取特定預訂。如要讓使用者覆寫查詢的預留項目,他們必須擁有該預留項目的 reservations.use
權限。
所需權限
如要取得為工作指定特定預訂項目所需的權限,請要求管理員授予您預訂資源的預訂項目編輯者 (roles/bigquery.reservationEditor
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備 reservations.use
權限,可為工作指定特定預留位置。
控管預訂項目的存取權
如要在預訂項目中設定 Identity and Access Management (IAM) 條件,請執行下列任一操作:
主控台
前往 Google Cloud 控制台的「IAM」頁面。
選取專案、資料夾或機構。
選取要將
bigquery.resourceEditor
角色授予哪一個主體:
如要將
bigquery.resourceEditor
角色授予資源上已有其他角色的主體,請找出包含該主體的資料列,然後點選該列中的 「編輯主體」,並按一下 「新增其他角色」。如要將
bigquery.resourceEditor
角色授予資源上沒有任何角色的主體,請按一下 「授予存取權」,然後輸入主體的 ID,例如my-user@example.com
。
- 從下拉式清單中選取要授予的
bigquery.resourceEditor
角色。 - 為角色新增條件。舉例來說,您可以新增條件,將角色授予所有以
/reservation1
結尾的預訂。 - 按一下 [儲存]。主體就會取得指定資源的角色。
bq
如要授予預留項目存取權,請使用 bq
set-iam-policy
指令:
bq set-iam-policy projects/project1/locations/US << EOF resource: "RESOURCE" policy { bindings { role: "roles/bigquery.resourceAdmin" members: "user:USER" condition { title: "title" expression: "EXPRESSION" } } } update_mask { paths: "bindings" } EOF
更改下列內容:
RESOURCE
:預訂資源的名稱。USER
:您要授予角色的使用者電子郵件地址。EXPRESSION
:角色授權依據的運算式。例如:resource.name.endsWith(\"/res1\")
如要進一步瞭解 IAM,請參閱「管理其他資源的存取權」。