購買及管理舊版運算單元承諾

透過 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. 在導覽選單中,按一下「容量管理」

  3. 按一下「建立承諾」

  4. 在「設定」下方:

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

      1. 不續約,改為採用每月包量使用合約 (預設)。年約到期後,會自動轉換為月約。
      2. 每年續訂。年約到期後,系統會自動續約一年。
      3. 不續約,改為採用彈性運算單元方案。 年約到期後,會轉換為彈性配額方案。

      詳情請參閱「預留配額承諾」。

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

    6. 點選「下一步」

  5. 查看預估的購買費用

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

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

首次購買容量時,系統會建立 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. 按一下「執行」

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

bq

使用 bq mk 指令並加上 --capacity_commitment 旗標,即可購買位置。

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:要購買的空位數量。

查看容量使用承諾

所需權限

如要查看約定,您必須具備下列 Identity and Access Management (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. 在導覽選單中,按一下「容量管理」

  3. 按一下「運算單元使用承諾」分頁標籤。容量使用承諾會列在「承諾」下方的表格中。

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. 按一下「執行」

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

bq

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

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

更改下列內容:

可更新容量使用承諾

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

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

所需權限

如要更新容量承諾,您需要下列 Identity and Access Management (IAM) 權限:

  • bigquery.capacityCommitments.update,該管理專案會維護承諾使用合約的所有權。

下列預先定義的 IAM 角色都具備這項權限:

  • BigQuery Admin
  • BigQuery Resource Admin

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

續訂承諾使用合約

年約方案有續約計畫,您可以在建立或轉換為年約方案時指定。您可以在合約到期前隨時變更年約續訂方案

主控台

如要變更年約的續約方案,請按照下列步驟操作:

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

    前往「BigQuery」

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

  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. 在導覽選單中,按一下「容量管理」

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

  4. 選取要拆分的約定。

  5. 按一下「分割」

  6. 在「Split commitment」(拆分承諾) 頁面中,使用「Configure split」(設定拆分) 滑桿,以 100 個運算單元為單位,選取要拆分到每個部分的運算單元數量。

  7. 按一下「Split」(分割) 即可分割承諾。新承諾使用合約會列在「運算單元使用承諾」分頁中。

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. 在導覽選單中,按一下「容量管理」

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

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

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

  6. 在「合併約期」頁面中,查看合併詳細資料,然後按一下「合併」。新的合併承諾使用合約會列在「運算單元承諾使用合約」分頁中。

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. 在導覽選單中,按一下「容量管理」

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

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

  5. 找出要刪除的承諾。

  6. 展開「動作」選項。

  7. 點選「刪除」。

  8. 輸入「REMOVE」,然後按一下「Proceed」(繼續)

SQL

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

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

    前往「BigQuery」

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

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

    取代下列項目:

  3. 按一下「執行」

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

bq

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

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

更改下列內容:

排解容量承諾問題

使用 BigQuery Reservations 遇到問題時,請參考本節的疑難排解步驟,或許有所助益。

購買的運算單元仍在處理中

運算單元是依據可用容量而定。如果您購買了運算單元承諾使用合約並透過 BigQuery 進行分配,「狀態」欄會顯示勾號。如果 BigQuery 無法立即分配要求的運算單元,則「狀態」欄會持續顯示待處理狀態。您可能必須等待數小時,直到有可用的運算單元釋出。如需提早取得空位,請嘗試下列做法:

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

如果建立或完成時段承諾失敗或耗時過長,請考慮暫時使用隨選價格。使用這項解決方案時,您可能需要在未指派給任何保留項目的其他專案中執行重要查詢,或是完全移除專案指派作業。