使用預留項目管理工作負載

本頁面說明如何使用時段預留,管理 BigQuery 工作負載。

運算單元保留項目

在 BigQuery 中,運算單元會分配到稱為「預留」的集區。您可以透過預留項目管理容量,並以符合貴機構需求的方式隔離工作負載。舉例來說,您可以為實際工作環境工作負載建立名為 prod 的預留項目,並為測試建立名為 test 的預留項目,這樣測試作業就不會與實際工作環境作業爭用資源。或者,您也可以為機構中的不同部門建立預訂,以分配運算費用。

儘管名稱如此,預留容量不一定會保留。使用自動調度預留資源時,系統會根據需求自動調度容量。此外,閒置運算單元可跨預留項目共用。

保留項目指派作業

如要在預留項目中使用已分配的時段,您必須將其指派給一或多個專案、資料夾或機構。專案中的工作執行時,會使用指派保留項目的運算單元。資源可以從Google Cloud 資源階層中的父項繼承指派項目。如果專案未指派給保留項目,則會沿用上層資料夾或機構的指派設定 (如有)。

專案會使用資源階層中指派給自己的最明確單一預留項目。資料夾指派作業會覆寫機構指派作業,而專案指派作業則會覆寫資料夾指派作業。

如果專案沒有指派或沿用的預訂方案,工作就會採用以量計價方案。如要進一步瞭解資源階層,請參閱整理 BigQuery 資源

資源可以指派給 None,代表沒有指派任何項目。指派給 None 的專案一律採用以量計價方案。None 指派作業的常見用途是將機構指派給保留項目,然後使用 None 將特定專案或資料夾排除在該保留項目之外。詳情請參閱「將專案指派給 None」。

建立指派項目時,請指定該指派項目的工作類型:

  • QUERY:將此預留項目用於非連續查詢作業,包括 SQL、DDL、DML 和 BigQuery ML (內建模型) 查詢。

  • BACKGROUND:選擇使用自己的預留量來執行 BigQuery 搜尋索引管理工作、BigQuery 變更資料擷取 (CDC)BigLake 中繼資料快取背景工作時,請使用這項預留量。使用 Datastream 的背景套用作業將來源資料庫複製到 BigQuery 時,也請使用這項預留空間。標準版不提供BACKGROUND預訂功能。

  • CONTINUOUS (預先發布版):使用這項預留項目執行連續查詢作業。如要使用持續查詢,請註冊加入功能搶先體驗計畫

  • ML_EXTERNAL:將此預留量用於使用 BigQuery 外部服務的 BigQuery ML 查詢。CREATE MODEL詳情請參閱「將運算單元指派給 BigQuery ML 工作負載」。標準版不提供 ML_EXTERNAL 預訂功能。

  • PIPELINE:使用這項預留項目執行載入和擷取工作。

    根據預設,載入和擷取工作是免費的,且會使用共用運算單元集區。BigQuery 不保證這個共用集區的可用容量或您所看到的總處理量。如果您載入大量資料,工作可能會等待可用的時段。在這種情況下,您可能需要購買專屬運算單元,並將 PIPELINE 工作指派給這些運算單元。最佳做法是建立額外的專屬保留項目,並啟用「忽略閒置運算單元」。如要進一步瞭解閒置運算單元,請參閱「閒置運算單元」。

    載入和擷取工作指派給保留項目之後,就無法再使用免費集區。您應監控資源用量和工作,確保預訂的資源有足夠容量,效能優於使用免費集區。

您無法將個別時段分配給特定作業。BigQuery 排程器會使用預留項目處理作業的運算單元分配作業。如要進一步瞭解運算單元的使用方式,請參閱 BigQuery 中的公平排程

彈性指派預留項目

如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bigquery-wlm-feedback@google.com

BigQuery 可讓您在執行階段指定查詢應使用的保留項目。這樣一來,您就能進一步控管資源分配,並避免建立不必要的專案。您可以使用 CLIUISQLAPI,在執行階段指定預留位置,覆寫專案、資料夾或機構的預設預留位置指派。指派的預留位置必須與您執行的查詢位於相同區域。所有版本都支援這類作業。

您必須有權存取預訂,才能在執行查詢時使用預訂。

如要彈性指派預留項目,請執行互動式查詢並指定預留項目。

結合保留項目與隨需帳單

您可以在一個地區使用以容量為準的模式,並在另一個地區使用以量計價模式。根據預設,所有專案都會採用以量計價模式。在某個地區內,您可以將專案、資料夾或機構指派給預留項目,使其選擇使用以容量為準的計費模式。舉例來說,如果您在美國多地區購買了運算單元使用承諾,並將您的機構指派給預設的保留項目,您的機構將會在美國多地區採用容量計費模式,而在所有其他地區則仍將採用以量計價模式。

在一個地區內,您可以將專案明確指派給預留項目,藉此同時使用以容量為準和以量計價的計費方式。任何未指派給預留項目的專案,都會繼續採用以量計價模式。您也可以指派預留項目 ID none,明確指派專案使用隨需計費。如果您將資料夾或機構指派給保留項目,但希望該資料夾或機構中的部分專案採用以量計價模式,這項功能就非常實用。詳情請參閱「將專案指派為無」。

採用以量計價的專案會使用與已承諾容量不同的容量。這些專案不會影響您已承諾容量的可用性。

指定管理專案

建立承諾和預留項目時,這些項目會與 Google Cloud 專案建立關聯。 這個專案會管理 BigQuery 保留項目資源,也會設為這些資源的主要帳單來源。這個專案不必與存放 BigQuery 工作或資料集的專案相同。

最佳做法是為預留資源建立專屬專案。這個專案稱為「管理」專案,因為它集中管理承諾的帳單和管理作業。為這個專案提供描述性名稱,例如「bq-COMPANY_NAME-admin」。然後建立一或多個獨立專案,用於存放 BigQuery 工作。

只有與管理專案位於同一個機構資源的專案,才能指派給保留項目。如果管理專案不屬於機構,則只有該專案可以使用運算單元。

系統會向管理專案收取已承諾的配額費用。使用運算單元的專案會產生儲存空間費用,但不會產生運算單元費用。您可以購買多種方案 (例如年約和三年約),並將配額放入同一個管理專案。

最佳做法是限制管理專案的數量。這有助於簡化帳單管理和時段分配作業。建議您盡可能為機構的所有預訂項目建立一個管理專案。複雜的機構可能需要額外的管理專案,才能符合管理或帳單需求。

使用多個管理專案

在某些情況下,您可能會想建立多個管理專案:

  • 將多個預訂和承諾的費用分攤到不同機構單位。
  • 將一或多個空位承諾對應至不同預訂組合。

不同管理員專案的預留項目不會共用閒置運算單元容量。

在 BigQuery Google Cloud 控制台的「容量管理」頁面中,您只能查看所選管理專案的預留項目和承諾。

調整運算單元預留項目大小

BigQuery 的架構會隨著資源量增加而呈線性成長。視工作負載而定,容量增加可能會帶來更多效能。不過,增加容量也會提高成本。因此,要購買的最佳運算單元數量取決於您的效能、總處理量和公用程式需求。

您可以實驗基準和自動調度資源運算單元,找出最佳的運算單元設定。舉例來說,您可以先以 500 個基準配額測試工作負載,然後依序測試 1,000 個、1,500 個和 2,000 個配額,觀察對效能的影響。

分配運算單元並執行工作負載至少七天後,您可以使用運算單元估算器分析效能,並模擬增減運算單元的效果。

您也可以查看專案目前的運算單元用量,以及您選擇的每月費用。隨選工作負載的運算單元軟性上限為 2,000 個,但請務必使用INFORMATION_SCHEMA.JOBS*檢視畫面、Cloud Logging、Jobs API 或 BigQuery 稽核記錄,檢查專案實際使用的運算單元數量。詳情請參閱「監控預留項目」。

運算單元用量時間軸。

使用預留項目管理工作負載

您可以建立額外的 BigQuery 預留項目,並將專案指派給這些預留項目,在工作負載、團隊或部門之間分配容量。保留項目是一個孤立的資源集區,有能夠利用整個機構中的閒置容量的額外好處。

例如,您可能有 1,000 個運算單元的承諾總容量和 3 種工作負載類型:數據資料學、ELT 和 BI。

  • 您可以建立具有 500 個運算單元的 ds 保留項目,並將所有相關 Google Cloud 專案指派給該 ds 保留項目。
  • 您可以建立具有 300 個運算單元的 elt 保留項目,並將用於 ELT 工作負載的專案指派給該 elt 保留項目。
  • 您可以建立具有 200 個運算單元的 bi 保留項目,並將連結至您的 BI 工具的專案指派給該 bi 保留項目。

刪除使用承諾。

您可以選擇為個別團隊或部門建立保留項目,而不是在多個工作負載類型之間劃分容量。

管理不同地區的預留項目

預訂是區域性資源。在一個地區購買的運算單元和建立的保留項目不能在任何其他地區使用。專案、資料夾和機構都可以指派給一個地區內的保留項目,並在另一個地區內隨選執行。如要管理其他地區的預留容量,請在 BigQuery「容量管理」頁面中變更地區:

  1. 在 BigQuery 控制台中,按一下「保留項目」
  2. 按一下「位置」選擇工具,然後選取要管理預訂的區域。選取其他地區。
  3. 選取地區後,您可以購買運算單元、建立預留項目,以及將專案指派給預留項目。

管理複雜機構的預訂

保留項目是機構範圍內的資源。建立預留項目後,您可以將容量指派給相同 Google Cloud機構中的任何專案。大多數 BigQuery 使用者會為保留項目和承諾使用單一管理專案。這個管理專案與 Cloud Billing 帳戶相關聯,該帳戶會支付容量費用。

不過,如果貴機構結構複雜,有多個部門各自管理帳單,您可能需要使用多個管理專案。請注意,閒置運算單元只能在同一個管理專案中建立的保留項目之間共用。請注意預訂和管理專案的配額與限制

如果您使用多個 Google Cloud 機構,則必須為每個機構建立至少一個管理專案,然後在相關管理專案中管理每個機構的預訂和承諾。您無法在不同機構之間共用容量。

管理預訂項目的進階控制選項

如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bigquery-wlm-feedback@google.com

BigQuery 的預留容量可進一步控管預留容量的使用方式,並提供額外的安全防護功能。您可以定義政策,指定哪些使用者或群組可以存取及使用特定預訂項目。確保機密資料和工作負載受到隔離和保護。預訂管理員可以精確控管哪些使用者或服務帳戶 (主體) 獲授權使用特定預訂。如要這麼做,請使用套用至管理專案 (管理預留項目的專案) 的 IAM 條件。

舉例來說,您可以建立 IAM 條件,將 reservations.use 權限授予特定使用者群組,適用於名稱開頭為特定前置字元的所有預訂項目。方便您管理相關預訂組合的存取權。

使用者必須具備 reservations.use 權限,才能為工作覆寫預設預留空間。roles/bigquery.resourceAdminroles/bigquery.resourceEditor 角色具備這項權限。您可以授予個別使用者、群組或服務帳戶存取權。您也可以根據預訂屬性 (例如名稱) 定義政策,因為 IAM 條件支援以屬性為基礎的存取權控管。

如要授予預留項目的 IAM 條件,請參閱「控管預留項目的存取權」。

運算單元承諾使用合約

運算單元使用承諾是指在指定時間內購買運算單元。您可以購買運算單元,以 50 個為遞增量,最多可購買區域運算單元配額。 容量使用承諾為選用項目,但可為穩定的工作負載節省費用。您可以視需要建立承諾,數量沒有上限。從您成功購買使用承諾的時刻起,系統會開始收費。如要查看目前定價資訊,請參閱容量承諾定價

  • 一年期承諾使用合約。您購買 365 天的使用承諾。365 天後,您可以選擇續約或改用其他類型的約期方案。

  • 承諾使用三年。您購買三年期承諾方案。3 年 (1,095 天) 後,您可以選擇續約或改用其他類型的約期方案。

承諾期結束後,系統會根據所選續約方案續約。

年約或三年約方案會按月計費,但您的財務承諾是針對整個約期,無法按月取消。帳單報表每天都會更新用量,您隨時可以查看。

運算單元承諾取決於運算能力可用性,嘗試購買運算單元使用承諾時,我們不保證能成功購買。不過,在您成功購買使用承諾之後,系統就會提供足夠的運算能力,直到使用承諾到期為止。

如果您在建立預留項目之前購買運算單元承諾,系統會自動建立名為 default 的預留項目,方便您使用。default 預留項目沒有特殊行為。您可以視需要建立額外的預留項目,或使用預設預留項目。

建議您為預訂項目指派非零的基準,以利預測成效和初始容量。雖然您可以設定基準運算單元數量為零的預留項目,並設定容量上限,以便使用自動調度資源功能,但這種做法的成效完全取決於自動調度資源功能是否已正確啟用,以及是否主動取得運算單元。如果這類零基準預留項目無法有效自動調度資源,就會改為完全依賴可用的閒置運算單元容量,這無法保證效能,且可能導致查詢速度不穩定或變慢。

續約承諾使用合約

購買合約時,請選取續約方案。您隨時可以變更合約的續約方案,直到合約到期為止。可用的續訂方案如下:

  • 無。使用承諾期間結束後,系統會移除使用承諾。 預訂不會受到影響。
  • 按年。承諾期結束後,承諾將續訂一年。
  • 三年。承諾期結束後,承諾會自動續約三年。

如要瞭解如何購買及續約承諾,請參閱「建立容量承諾」。

舉例來說,如果您在 2019 年 10 月 5 日下午 6 點購買一年期使用承諾,系統會立即開始計費。2020 年 10 月 4 日下午 6 點後,您就可以刪除或續約承諾,請注意 2020 年是閏年。您可以在 2020 年 10 月 4 日下午 6 點前變更續訂方案,方法如下:

  • 如果您選擇續約年約方案,則您的使用承諾會在 2020 年 10 月 4 日下午 6 點整續約一年。
  • 如果您選擇續約三年,則使用承諾會在 2020 年 10 月 4 日下午 6 點續約三年。

注意:承諾期限到期後,續約程序最多可能需要約一小時才能完成。舉例來說,如果使用承諾在 2020 年 10 月 4 日下午 6 點到期,系統會在 2020 年 10 月 4 日下午 6 點到 7 點之間,顯示續約的使用承諾記錄。由於建立的承諾生效時間為下午 6 點,因此在資料更新期間內不會產生隨選費用。

承諾到期

承諾方案一經建立即無法刪除。 如要刪除年約或三年約,請將續約方案設為 NONE。 承諾到期後,系統會自動刪除。如要進一步瞭解承諾到期日,請參閱「承諾到期日」。

如果您意外購買了承諾產品或錯誤設定了承諾產品,請與 Cloud 帳單支援團隊聯絡取得協助。

預訂限制

  • 一個機構的預訂項目無法與其他機構共用。
  • 您必須為每個機構使用單獨的預訂項目和單獨的管理專案。
  • 每個機構在單一位置最多可有 10 個管理專案,且這些專案都含有有效預留項目。
  • 機構之間或單一機構內的不同管理專案之間,無法共用閒置容量。
  • 承諾和預留項目是地區性資源。在某個區域或多區域購買的承諾,無法用於其他區域或多區域的預留項目,即使單一區域位置與多區域位置位於同一地點也一樣。舉例來說,您無法在 europe-west4 中使用在 EU 多區域購買的承諾。
  • 承諾和預訂無法從一個區域或多區域移至另一個區域。
  • 在某個管理專案中購買的承諾無法移至其他管理專案。
  • 以某個版本購買的使用承諾,無法用於其他版本的預留項目。
  • 不同版本的預留項目不會共用閒置運算單元。
  • 自動調度資源的時段無法共用,因為系統會在不再需要時縮減資源。

預訂可預測性

如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bigquery-wlm-feedback@google.com

如要使用預訂預測功能,請先啟用預訂公平性

預留項目預測功能可讓您設定預留項目中消耗的運算單元絕對上限。BigQuery 提供基準運算單元、閒置運算單元和自動調度資源運算單元,做為潛在的容量資源。建立設有大小上限的預留項目時,請根據過去的工作負載,確認基準運算單元數量,以及自動調度資源和閒置運算單元的適當設定。

如要啟用預留項目預測功能,您必須在預留項目中設定最大運算單元和資源調度模式的值。運算單元數量上限必須為正數,且大於指派給預留項目的基準運算單元數量。如要進一步瞭解如何使用預留項目預測功能,請參閱建立專屬時段的預留項目。在預訂中設定最大空位數值時,無法設定 autoscale_max_slots 的值。

ignore_idle_slots 的值必須與縮放模式一致。如果縮放模式為 ALL_SLOTSIDLE_SLOTS_ONLYignore_idle_slots 必須為 false。如果縮放模式為 AUTSOCALE_ONLYignore_idle_slots 必須為 true。

您可以設定預留項目,只使用下列容量資源組合,且不得超過定義上限:

  • 基準運算單元 + 閒置運算單元:預留項目的運算單元數量大於零,且調度模式為 IDLE_SLOTS_ONLY。預留項目會使用設定的基準運算單元數量,以及可用的閒置運算單元,但總數不會超過運算單元數量上限。如果沒有足夠的閒置運算單元,預留項目可能無法達到上限。

  • 基準運算單元 + 閒置運算單元 + 自動調度資源運算單元:預留運算單元容量大於零,且調度模式為 ALL_SLOTS。預留項目會先耗用設定的基準運算單元數量,接著是所有可用的閒置運算單元,最後才是自動調度的運算單元。

  • 基準運算單元 + 自動調度資源運算單元:預留運算單元數量大於零,且調度模式為 AUTOSCALE_ONLY。預留項目會先耗用設定的基準運算單元,然後是自動調度運算單元。

  • 閒置運算單元 + 自動調度資源運算單元:預留項目的運算單元容量為零,且調度模式為 ALL_SLOTS。預留項目會先耗用所有可用的閒置運算單元,然後再耗用自動調度運算單元。

  • 閒置運算單元:預留項目的運算單元容量為零,且縮放模式為 IDLE_SLOTS_ONLY。預留項目會使用所有可用的閒置運算單元,但數量不超過設定上限。如果沒有足夠的閒置運算單元,預留項目可能無法達到上限。

下圖顯示可用的不同設定選項:

可預測的預訂設定選項。

在圖表中,五個設定選項顯示 BigQuery 如何耗用運算單元,直到達到設定上限為止。前三個選項包含基準時段,其他選項則未設定基準時段。

限制

預留項目的預測功能有下列限制:

  • 除非選擇 AUTOSCALE_ONLY 選項,否則預訂預測功能僅適用於 Enterprise 和 Enterprise Plus 版本。

  • 預留資源的預測結果僅供參考。整體用量仍可能超過設定上限。

後續步驟

排解預訂問題

本節旨在協助排解與預訂項目互動時遇到的常見問題,例如判斷預訂項目未用於 BigQuery 作業的原因、找出不明預訂項目,或解決新增時段時的問題。

無法在預訂大小中新增更多運算單元

如果在嘗試為預約新增更多空位時遇到 Failed to allocate slots for reservation in the current system stateFailed to update reservation: Failed to allocate slots for reservation 等錯誤,通常是暫時性問題。如要減輕影響,請採取下列措施:

  • 請減少時段數量後重試
  • 如果減少配額後仍無法執行作業,請等待 15 分鐘再重試

如果多次重試並等待 30 分鐘後,仍收到相同錯誤訊息,請與 BigQuery 支援團隊聯絡

配額不足,無法完成這項要求

如果錯誤訊息顯示 There is insufficient quota to complete this request,表示要求超出專案配額上限。

如要解決這項錯誤,請採取下列任一做法:

  1. 在預留項目中新增較少的運算單元,以免超出配額限制。
  2. 在對應區域申請提高配額。請參閱「申請提高配額」。

BigQuery 未使用預留項目執行工作

在多種情況下,工作可能會使用隨選資源或免費共用運算單元集區,而不是使用您建立的預留項目。

查詢和預訂位於不同地區

預訂是區域性資源。查詢會在與查詢中參照的任何資料表相同的位置執行。

如果資料表位置與預留項目位置不符,查詢會使用共用運算單元集區執行,不會使用預留項目。

查詢 BigQuery Omni 資料表

查詢 BigQuery Omni 資料表時,請務必在與資料表相同的區域中建立預留項目,而非在共置區域中建立。如果您在同區的 BigQuery 區域建立預留項目,查詢會以隨選模式執行。

已建立預留項目,但專案未指派給該項目

如要使用購買的運算單元,請建立指派項目,將專案指派給特定預留項目。請確認專案已指派對應的預留項目

工作類型不符

建立指派作業時,請務必選取正確的工作類型,否則工作會使用共用運算單元集區執行。

舉例來說,如果選取 PIPELINE 做為工作類型,所有查詢工作都會依需求執行。將指派類型變更為 QUERY,即可使用保留項目執行查詢工作。

多陳述式查詢

如果您執行多個陳述式查詢,即使子項工作是在保留項目下執行,父項工作物件也不會與保留項目建立關聯。

如要確認工作是否確實使用保留項目,請查看子項工作的中繼資料。

擷取快取結果

查詢工作擷取快取結果時,由於系統不會執行實際的運算,而是直接從臨時表擷取結果,因此保留欄位會是空白。

變更資料擷取列修改作業

如果您有變更資料擷取 (CDC) 資料表,BigQuery 會在 max_staleness 間隔內套用待處理的資料列修改內容,做為使用 BACKGROUND 指派類型的背景工作。如果沒有 BACKGROUND 指派項目,就會採用隨選方案的價格。建議為專案建立 BACKGROUND 指派項目,以免產生高昂的隨需費用。您可以在工作 ID 中找出 queueworker_cdc_background_merge_coalesce 子字串,藉此識別這些工作。

使用外部服務的 BigQuery ML 模型類型

如果專案中沒有指派任何 ML_EXTERNAL 工作類型的預訂方案,查詢工作就會採用依用量計價方案執行。QUERY 工作類型指派作業只能用於非外部模型或矩陣因式分解模型的 BigQuery ML 模型。詳情請參閱預訂指派說明文件。

專案中無法辨識的預留項目

BigQuery 擁有保留項目,代表用於 BigQuery 中特定作業的免費共用運算單元集區:

default-pipeline

根據預設,在 BigQuery 中批次載入或匯出資料時,會使用共用的免費運算單元集區。如果您檢查這些載入或擷取工作,系統會將使用的預留項目列為 default-pipeline

使用共用運算單元集區不會產生費用。如要確保效能穩定可預測,建議購買 PIPELINE 預留項目。