購買及管理舊版運算單元承諾使用合約

BigQuery Reservation API 可讓您購買專用運算單元 (稱為承諾)、建立運算單元資源池 (稱為預留項目),以及將專案、資料夾和機構指派給這些預留項目。

容量使用承諾是指購買 BigQuery 運算容量,但有一些最低的承諾使用期間。使用版本建立保留項目時,購買容量承諾並非必要,但可以節省成本。

承諾是地區性資源。在某個地區或多區域購買的使用承諾無法用於其他地區或多區域。使用承諾無法在區域之間或區域與多區域之間移動。

啟用 Reservations API

BigQuery Reservation API 與現有的 BigQuery API 不同,必須單獨啟用。詳情請參閱「啟用及停用 API」。

  • API 名稱為「BigQuery Reservations API」
  • BigQuery Reservation API 的端點為 bigqueryreservation.googleapis.com

啟用 API。

購買運算單元

如要預留容量一段最短時間,您可以購買容量使用承諾。這樣一來,您就能享有折扣並節省成本。如要進一步瞭解具體費用,請參閱 BigQuery 定價

所需權限

如要建立容量承諾,您必須具備下列身分與存取權管理 (IAM) 權限:

  • 管理專案bigquery.capacityCommitments.create,該專案會維護承諾的擁有權。

下列預先定義的 IAM 角色都包含此權限:

  • BigQuery Admin
  • BigQuery Resource Admin

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。

建立容量使用承諾

承諾是地區性資源。在某個地區或多地區購買的承諾無法用於其他地區或多地區。您無法在區域之間或區域與多區域之間移動承諾。

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下「建立承諾」

  4. 在「設定」下方:

    1. 選取位置。
    2. 在「容量模式」部分中,選取容量模式。
    3. 選取「Commitment duration」(承諾使用時間長度),指定承諾方案
    4. 如果您購買的是年約,請選取在合約到期後生效的續約方案

      1. 不續約,改為採用月約方案 (預設)。年約到期後,系統會轉換為月付方案。
      2. 每年續約。年約到期後,系統會續約一年,繼續以年約方案收費。
      3. 不續約,改為採用彈性運算單元方案。年約到期後,系統會將其轉換為彈性時段承諾。

      詳情請參閱「承諾」。

    5. 輸入要購買的運算單元數量

    6. 點按「Next」

  5. 查看購買項目的預估費用

  6. 在「確認並提交」下方:

    1. 輸入「CONFIRM」確認購買。
    2. 按一下「購買」購買運算單元。
  7. 如要查看承諾使用設定,請按一下「View slot commitments」(查看運算單元使用承諾)。容量佈建完成後,所要求的容量使用承諾會呈現綠色狀態。

首次購買容量時,系統會建立 default 保留項目。

SQL

如要建立容量承諾,請使用 CREATE CAPACITY DDL 陳述式

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    CREATE CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`
    OPTIONS (
      slot_count = NUMBER_OF_SLOTS,
      plan = 'PLAN_TYPE');

    請依指示取代下列項目:

    • ADMIN_PROJECT_ID管理專案的專案 ID,該專案會保留這項承諾的擁有權
    • LOCATION:承諾位置
    • COMMITMENT_ID:承諾 ID

      專案和位置中的名稱不得重複。開頭和結尾必須為小寫英文字母或數字,且只能包含小寫英文字母、數字和連字號。

    • NUMBER_OF_SLOTS:要購買的版位數量
    • PLAN_TYPE方案類型,例如 FLEXMONTHLYANNUAL

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

使用加上 --capacity_commitment 旗標bq mk 指令購買時段。

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    --plan=PLAN_TYPE \
    --slots=NUMBER_OF_SLOTS

更改下列內容:

  • ADMIN_PROJECT_ID管理專案的專案 ID,該專案會保留這項承諾的擁有權
  • LOCATION:承諾位置
  • PLAN_TYPE方案類型,例如 FLEXMONTHLYANNUAL
  • NUMBER_OF_SLOTS:要購買的版位數量。

查看容量使用承諾

所需權限

如要查看承諾,您必須具備下列身分與存取權管理 (IAM) 權限:

  • 管理專案bigquery.capacityCommitments.list,該專案會維護承諾的擁有權。

下列預先定義的 IAM 角色都包含此權限:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。

依專案查看容量使用承諾

如要查看各專案的容量承諾,請按照下列步驟操作:

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下「Slot commitments」分頁標籤。您的容量使用承諾會列在「承諾」下方的表格中。

SQL

如要查看管理專案的承諾,請查詢 INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT 檢視畫面

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    請依指示取代下列項目:

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

請使用 bq ls 指令,並加上 --capacity_commitment 旗標,列出管理專案的承諾。

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

更改下列內容:

可更新容量使用承諾

您可以對容量使用承諾進行下列更新:

  • 續訂現有承諾。
  • 將承諾轉換為期限較長的承諾合約方案。
  • 將承諾分割為兩個承諾。
  • 將兩個承諾合併為單一承諾。

所需權限

如要更新容量承諾,您必須具備下列身分與存取權管理 (IAM) 權限:

  • 管理專案bigquery.capacityCommitments.update,該專案會維護承諾的擁有權。

下列預先定義的 IAM 角色都包含此權限:

  • BigQuery Admin
  • BigQuery Resource Admin

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。

續訂承諾使用合約

年約方案有續約方案,您可以在建立或轉換為年約方案時指定。在合約結束日期之前,您隨時可以變更年約的續約方案

主控台

您可以按照下列步驟變更年約方案的續約方案:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下 [Slot commitments] (運算單元使用承諾) 分頁標籤。

  4. 找出要編輯的承諾。

  5. 依序按一下 「動作」,然後選取「編輯續約方案」選項。

  6. 選取新的續約方案。

bq

如要變更年約方案的續約選項,請使用 bq update 指令搭配 --capacity_commitment 旗標--renewal_plan 旗標

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --renewal_plan=PLAN_TYPE \
    --capacity_commitment=true \
    COMMITMENT_ID

更改下列內容:

將承諾轉換為較長的時間

您隨時可以選擇將承諾轉換為較長時間的承諾類型:

  • 您可以將彈性時段承諾轉換為按月或按年計費的承諾。
  • 您可以將月約方案轉換為年約方案。

更新承諾使用合約後,系統會立即以新方案的費率向您收費,並重設結束日期。

如要轉換承諾,請使用 bq update 指令,並加上 --plan 旗標

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN \
    --capacity_commitment=true \
    COMMITMENT_ID

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:承諾位置
  • PLAN_TYPE方案類型,例如 FLEXMONTHLYANNUAL
  • RENEWAL_PLAN續約方案

    這項設定僅適用於 PLAN_TYPEANNUAL 的情況。如果 PLAN_TYPEMONTHLY,請省略這個標記。

  • COMMITMENT_ID:承諾 ID

    如要取得 ID,請參閱「查看已購買的承諾使用合約」。

拆分承諾使用合約

您可以將承諾使用合約分割為兩個承諾。如果您想續約部分承諾,這項功能就非常實用。舉例來說,如果您有 1,000 個運算單元的年度承諾,可以將 300 個運算單元分割為新的承諾,讓原始承諾保留 700 個運算單元。接著,您可以以年費率續約 700 個運算單元,並在結束日期後將 300 個運算單元轉換為彈性運算單元。

分割承諾時,新承諾會與原始承諾使用相同的方案和承諾結束日期。

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下 [Slot commitments] (運算單元使用承諾) 分頁標籤。

  4. 選取要拆分的承諾。

  5. 按一下「分割」

  6. 在「分割承諾」頁面中,使用「設定分割」滑桿選取每個分割項目的運算單元數量,以 100 個運算單元為單位遞增。

  7. 按一下「分割」,即可分割承諾。新的承諾會列在「Slot commitments」分頁中。

bq

如要分割承諾,請使用 bq update 指令。

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --split \
    --slots=SLOTS_TO_SPLIT \
    --capacity_commitment=true \
    COMMITMENT_ID

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:承諾的位置
  • SLOTS_TO_SPLIT:從原始承諾分割為新承諾的槽數
  • COMMITMENT_ID:承諾 ID

    如要取得 ID,請參閱「查看已購買的承諾使用合約」。

合併兩個承諾使用合約

您可以將多個承諾合併為一項承諾。合併的承諾使用合約必須是相同類型 (FLEXMONTHLYANNUALTHREE_YEAR)。合併後的承諾使用合約結束日期為原始承諾使用合約的最大結束日期。如果承諾使用合約的結束日期較早,系統會將其延長至較晚的日期,並按比例收取這些時段的費用。

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下 [Slot commitments] (運算單元使用承諾) 分頁標籤。

  4. 選取要合併的承諾使用合約。

  5. 按一下 [Merge] (合併)。

  6. 在「Merge commitments」頁面中,查看合併作業的詳細資料,然後按一下「Merge」。新的合併承諾會列在「Slot commitments」分頁中。

bq

如要將兩個承諾合併為一個承諾,請使用 bq update 指令:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --merge=true \
    --capacity_commitment=true \
    COMMITMENT1,COMMITMENT2

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:承諾的位置
  • COMMITMENT1:要合併的第一個版本
  • COMMITMENT2:要合併的第二個版本

刪除承諾使用合約

如果容量使用承諾的結束日期已過,您可以刪除該承諾。 Google Cloud 控制台會顯示承諾結束日期。刪除承諾前,請確認有足夠的未分配運算單元。如果沒有的話,您必須減少保留項目中的運算單元數量,或完全移除保留項目。

所需權限

如要刪除容量承諾,您必須具備下列身分與存取權管理 (IAM) 權限:

  • 管理專案bigquery.capacityCommitments.delete,該專案會維護承諾的擁有權。

下列預先定義的 IAM 角色都包含此權限:

  • BigQuery Admin
  • BigQuery Resource Admin

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。

刪除容量使用承諾

主控台

如要刪除容量使用承諾,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「Capacity management」(容量管理)

  3. 按一下 [Slot commitments] (運算單元使用承諾) 分頁標籤。

  4. 在「Location」下拉式清單中,選取適當的位置。

  5. 找出要刪除的承諾。

  6. 展開 「Actions」 選項。

  7. 點選「刪除」。

  8. 輸入「REMOVE」,然後按一下「Proceed」

SQL

如要刪除容量使用承諾,請使用 DROP CAPACITY DDL 陳述式

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    DROP CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`;

    請依指示取代下列項目:

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

如要刪除容量承諾,請使用 bq rm 指令並加上 --capacity_commitment 標記:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    COMMITMENT_ID

更改下列內容:

排解容量使用承諾問題

本節說明疑難排解步驟,以便解決使用 BigQuery 保留項目時發生的問題。

購買的運算單元處於待處理狀態

運算單元取決於可用容量,如果您購買了運算單元承諾並透過 BigQuery 進行分配,「狀態」欄會顯示勾號。如果 BigQuery 無法立即分配要求的運算單元,則「狀態」欄會持續顯示待處理狀態。您可能需要等待數小時,運算單元才會釋出。如需盡快取得時段,請嘗試下列方法:

  1. 刪除待處理的承諾。
  2. 購買較少運算單元的承諾產品。視容量而定,較小的承諾可能會立即生效。
  3. 以單獨承諾的方式購買剩餘的運算單元。這些時段可能會在「狀態」欄中顯示為待處理,但通常會在幾小時內啟用。
  4. 選用:如果兩個承諾合約都已生效,只要您購買的方案相同,即可將兩個承諾合約合併為單一承諾合約。

如果預留時段失敗或需要很長的時間才能完成,建議您暫時使用隨選定價。採用這個解決方案時,您可能需要在未指派給任何保留項目的其他專案上執行重要查詢,或者可能需要完全移除專案指派。