瞭解預留項目

本頁說明如何使用運算單元預留項目管理 BigQuery 工作負載。

運算單元保留項目

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

管理員也可以根據指派給預留項目的工作負載,設定運算單元容量。舉例來說,如果您有正式環境等級、具時效性的工作負載,請建立具有足夠基準運算單元的預留項目。

分配後,基準運算單元會持續提供給預留項目,但能否增加基準運算單元,取決於目前的系統容量。相較之下,使用自動調度資源預留項目時,BigQuery 不會預先預留基準和預留項目大小上限之間的容量。BigQuery 會根據您的需求和系統可用性,自動擴充或減少這項容量。自動調度資源預留項目預設以秒計費,至少會產生一分鐘的基本費用。您可以在預留項目層級選擇加入 BigQuery 流暢擴充,按秒計費,且沒有最短使用時間限制。此外,閒置運算單元可供多個預留項目共用。

預留項目指派作業

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

專案會使用資源階層中最明確的單一預留項目。資料夾指派作業會覆寫組織指派作業,專案指派作業則會覆寫資料夾指派作業。

如果專案沒有指派或繼承的預留項目,則工作會採用隨選計價模式。如要進一步瞭解如何整理 BigQuery 資源,請參閱「資源階層簡介」。

資源可以指派給 None,代表沒有指派項目。指派給 None 的專案一律採用隨選計價方案。None 指派作業的常見用途是將機構指派給預留項目,然後使用 None 選擇不將特定專案或資料夾指派給該預留項目。詳情請參閱「將專案指派給 None」。

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

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

  • AUTOMATIC_MATERIALIZED_VIEW_REFRESH:這項預留空間用於自動具體化檢視重新整理作業。

  • BACKGROUND_CHANGE_DATA_CAPTURE:選擇使用自己的預留項目執行 BigQuery CDC 擷取背景工作時,請使用這個預留項目。BACKGROUND_CHANGE_DATA_CAPTURE預訂功能不適用於 Standard 版。

  • BACKGROUND_COLUMN_METADATA_INDEX:選擇使用自己的預留位置來執行 BigLake 中繼資料快取背景工作時,請使用這個預留位置。使用 Datastream 的背景套用作業,將來源資料庫複製到 BigQuery 時,也請使用這項預留項目。Standard 版本不提供BACKGROUND_COLUMN_METADATA_INDEX預留項目。

  • BACKGROUND_SEARCH_INDEX_REFRESH:選擇使用自己的預留項目執行 BigQuery 搜尋索引管理背景工作時,請使用這個預留項目。Standard 版本不提供BACKGROUND_SEARCH_INDEX_REFRESH預留項目。

  • BACKGROUND:選擇使用自己的預留項目,透過 Datastream 的背景套用作業,將來源資料庫複製到 BigQuery 時,請使用這個預留項目。如果沒有更明確的預留項目,這項預留項目也會做為備用,用於 BACKGROUND_CHANGE_DATA_CAPTURE、BACKGROUND_COLUMN_METADATA_INDEX 和 BACKGROUND_SEARCH_INDEX_REFRESH 描述的工作。Standard 版本不提供BACKGROUND預留項目。

  • CONTINUOUS:將這個預留項目用於持續查詢工作。

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

  • PIPELINE:將這項預留項目用於載入和擷取工作。

    根據預設,載入和擷取工作為免費,並使用共用的運算單元集區。BigQuery 無法保證這個共用集區的容量可用性,也無法保證您看到的輸送量。如果載入大量資料,工作可能會等待可用的時段。

    將載入和擷取工作指派給預留項目後,這些工作就無法再存取免費集區。請監控資源使用率和工作,確保預留項目有足夠的容量,可在所需的工作時間內完成。

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

彈性指派預留項目

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

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

如果預設指派的預訂版本為 Enterprise Plus,則只能使用 Enterprise Plus 預訂覆寫。

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

結合預留項目與隨選計費

您可以在某個區域使用依運算能力計費模式,在另一個區域使用隨選模式。根據預設,所有專案都採用隨選計費模式。在區域內,您可以將專案、資料夾或組織指派給預留項目,選擇採用依用量計費模式。舉例來說,如果您在美國多區域購買運算單元承諾使用合約,並將組織指派給預設預留項目,則組織在美國多區域會採用依運算能力計費模式,但在所有其他區域仍會採用隨選計費模式。

在特定區域中,您可以將專案明確指派給預留項目,藉此合併以容量為準和隨選計費。未指派預留項目的專案會繼續採用隨選計費模式。您也可以指派預留項目 ID none,明確指派專案使用隨選計費模式。如果您將資料夾或機構指派給預訂項目,但希望該資料夾或機構中的部分專案採用隨選計費,這項功能就非常實用。詳情請參閱「將專案指派給『無』」。

採用隨選計費的專案會使用與承諾容量不同的容量。這些專案不會影響已承諾容量的可用性。如果您查詢串流緩衝區中的資料,系統不會針對從串流緩衝區處理的位元組,向隨選工作收取費用,但預留項目中執行的工作會使用運算單元處理這些位元組。

指定管理專案

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

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

只有與管理專案位於相同機構資源的專案,才能指派給保留項目。如果管理專案不屬於任何機構,則只有該專案可以使用配額。

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

建議您限制管理專案的數量。這有助於簡化帳單管理和運算單元分配作業。建議您盡可能為貴組織的所有預留項目建立一個管理專案。複雜的組織可能需要額外的管理專案,才能滿足管理或計費需求。

使用多個管理專案

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

  • 將多個預訂和承諾的費用分攤到不同組織單位。
  • 將一或多個運算單元承諾使用合約對應至不同的預留項目組合。

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

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

專案上限和排程政策

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

專案上限 (也稱為排程政策) 可讓您為使用預留項目的專案設定用量和並行限制,自訂預設的公平排程行為。即使專案符合公平調度條件,可獲得更多容量,這些限制仍可避免專案耗用過多時段。

您可以在預留項目層級設定專案上限,做為預設限制。除非遭到覆寫,否則這些限制會套用至使用該預留項目的所有專案。或者,您也可以將專案上限設為個別專案的專案專屬覆寫。

系統支援下列專案數量上限類型:

  • 運算單元數量上限:限制預留項目中,指派對象專案執行查詢時的運算單元用量。最小值為 100。 這並非嚴格限制,而是約略上限。
  • 並行上限:限制預留項目中指派專案可同時執行的查詢數量。

    並行上限僅在查詢准入時套用,不會導致執行中的查詢取消。如果將並行上限調降至低於目前執行中的查詢數量,新查詢會排入佇列,直到執行中的查詢完成足夠數量為止。

變更這些設定時,請注意下列限制:

  • 變更最多需要一分鐘才會生效。
  • 修改每項專案的運算單元數量上限覆寫設定後,必須啟動新查詢才會生效。

如要進一步瞭解如何設定這些政策,請參閱「管理工作負載指派作業」和「管理工作負載預留項目」。

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

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

新增基準運算單元或提高自動調度資源上限時,BigQuery 排程器會為個別查詢指派更多運算單元,盡可能提高平行處理能力。雖然這會縮短查詢執行時間,但並行 worker 負擔可能會導致查詢耗用的總運算單元時間 (total_slot_ms) 增加。

您可以嘗試使用基準和自動調度資源運算單元,找出最佳的運算單元設定。舉例來說,您可以先使用 500 個基準運算單元測試工作負載,接著再使用 1,000、1,500 和 2,000 個基準運算單元,並觀察對效能的影響。

如果測試效能的區域有可用的閒置運算單元,預留項目可能會以低於預期的運算單元數量達到效能。這是因為預留項目使用閒置運算單元來滿足工作負載的運算單元需求。如果其他預留項目的工作負載變更,導致閒置運算單元可用性降低,工作負載效能可能會下降。因此,對於生產層級的時限工作負載,請確保預留方案在時段容量方面可自給自足。這樣一來,閒置運算單元的變化就不會直接影響工作成效。

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

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

運算單元用量時間軸。

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

您可以使用 BigQuery 預留項目,建立額外的預留項目並將專案指派給這些預留項目,藉此在工作負載、團隊或部門之間分配容量。預留項目是獨立的資源集區,可讓您充分運用貴組織在特定區域的閒置容量。

舉例來說,您可能共有 1,000 個已承諾容量配額,以及三種工作負載類型:資料科學、ELT 和 BI。

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

刪除使用承諾。

除了依工作負載類型劃分運算資源,您也可以選擇為個別團隊或部門建立預留項目。透過自動調度資源,您可以在多個預訂項目中隔離工作負載,提供更彈性且精細的工作負載管理。

管理不同區域的預留項目

預留項目是區域性資源。在某個區域購買的運算單元和建立的預留項目,無法用於其他區域。專案、資料夾和機構可指派給某個區域的預訂項目,並在另一個區域中隨選執行。如要管理其他區域的預留項目,請在 BigQuery 的「Workload management」(工作負載管理) 頁面變更區域:

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

管理複雜機構的預訂

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

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

如果您使用多個 Google Cloud 組織,則必須為每個組織建立至少一個管理專案,然後在相關聯的管理專案中,管理各個組織的預留項目和承諾使用合約。容量無法跨機構共用。

管理預訂的進階控制選項

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

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

使用者必須具備 reservations.use 權限,才能覆寫工作的預設預留項目,或在專案已有預留項目指派作業時,強制工作依隨選方式執行。roles/bigquery.resourceAdmin 和 roles/bigquery.resourceEditor 角色具備這項權限。您可以授予個別使用者、群組或服務帳戶存取權。您也可以根據預留項目屬性 (例如名稱) 定義政策,因為 IAM 條件支援屬性式存取控管。

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

運算單元承諾使用合約

運算單元使用承諾是指在特定時間範圍內購買運算單元。您可以購買運算單元,每次購買數量須為 50 的倍數,最多不得超過區域運算單元配額。容量承諾為選用功能,但可為穩定的工作負載節省成本。運算單元承諾使用合約用於支付預留項目的基準運算單元費用。任何未使用的運算單元容量,都會做為閒置運算單元,與其他預留項目共用。運算單元承諾使用合約不適用於自動調度資源運算單元。為確保您能以折扣費率使用承諾的運算單元,請確認承諾的運算單元數量足以涵蓋基準運算單元。你可以建立的承諾數量沒有上限。從您成功購買承諾使用合約的那一刻起,系統就會開始收費。如要瞭解目前的定價資訊,請參閱「容量承諾使用合約定價」。

  • 年約制承諾使用合約。您購買了 365 天的承諾使用合約。365 天後,您可以選擇續約或轉換為其他類型的承諾使用合約方案。

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

承諾期結束後,承諾將根據選取的續約方案續訂。

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

運算單元承諾使用合約會受可用容量影響。嘗試購買時,不保證一定能成功購買。不過,承諾購買交易成功後,容量就會在承諾到期前供您使用。

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

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

續約

購買承諾時,請選取續約方案。在承諾使用合約到期前,您隨時可以變更續約方案。可用的續約方案如下:

  • 無。承諾期結束後,承諾使用合約就會移除。預留項目不受影響。
  • 年約方案。承諾期結束後,您的承諾會再續約一年。
  • 三年。承諾期結束後,承諾使用合約會再續約三年。

如要瞭解如何購買及續約承諾使用合約,請參閱「建立運算資源承諾使用合約」。

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

  • 如果您選擇續約一年,系統會在 2020 年 10 月 4 日下午 6 點續約一年。
  • 如果您選擇續約三年承諾使用合約,則在 2020 年 10 月 4 日下午 6:00,您的承諾使用合約會續約三年。

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

承諾使用合約到期

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

如果誤購承諾或設定承諾時發生錯誤,請向 Cloud Customer Care 團隊尋求協助。

預留項目限制

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

預留項目可預測性

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

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

如要啟用預留項目預測功能,必須在預留項目中設定最大運算單元數和擴充模式的值。運算單元數量上限必須為正數,且大於指派給預留項目的基準運算單元數量。如要進一步瞭解如何使用預留項目可預測性,請參閱「建立具有專屬運算單元的預留項目」。在預留項目設定運算單元數量上限時,無法設定 autoscale_max_slots 的值。

ignore_idle_slots 的值必須與縮放模式一致。如果縮放模式為 ALL_SLOTS 或 IDLE_SLOTS_ONLY,ignore_idle_slots 必須為 false。如果縮放模式為 AUTOSCALE_ONLY,ignore_idle_slots 必須為 true。

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

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

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

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

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

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

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

可預測的預留項目設定選項。

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

限制

預訂預測功能有下列限制:

  • 除非選擇 AUTOSCALE_ONLY 選項,否則預留項目的可預測性僅適用於 Enterprise 和 Enterprise Plus 版本。

  • 預留項目的可預測性會盡可能達到最佳。整體用量仍可能超過設定的上限。

後續步驟

預留項目群組

如要使用預留項目群組,請先啟用預留項目公平性。

預留項目群組可讓您管理多個預留項目的屬性,就像資料集整理資料表一樣。

如果預留項目屬於同一個預留項目群組,會先彼此共用閒置運算單元,然後才開放給機構使用:

預留項目群組。

與預留項目群組共用閒置運算單元

閒置運算單元會平均分配給未分組的預留項目和預留項目群組,然後再平均分配給預留項目群組內的預留項目。

在以下範例中,有三個預留項目和 1,200 個閒置運算單元。如果沒有預留項目群組,每個預留項目會平均分配到 400 個閒置運算單元。將預留項目 1 和 2 分組後,閒置運算單元的分配方式會改變。閒置運算單元會先平均分配給預留項目群組和預留項目 3 (兩者各 600 個閒置運算單元)。接著,系統會將預留項目群組的 600 個閒置運算單元平均分配給預留項目 1 和 2。

預留項目群組閒置運算單元共用。

限制

預留項目群組有下列限制:

  • 共用預留項目群組的預留項目必須屬於相同專案和區域。

  • 專案必須啟用以預留項目為基礎的公平性機制。

  • 群組中的預訂項目必須使用相同的版本。

  • 在同一個群組中,您無法混用有代管災難復原設定和沒有這類設定的預留項目。群組中的所有預留項目都必須設定災難復原功能,或全部停用。

  • 如果群組中的預留項目已啟用災難復原功能,則所有預留項目的主要和次要位置都必須使用同一組區域。

如要進一步瞭解如何使用預訂群組,請參閱「使用預訂群組優先處理閒置時段」。

排解預訂問題

請參考下列資訊,排解預留項目的常見問題,例如新增運算單元時發生錯誤、預留項目未用於 BigQuery 工作,或無法辨識預留項目。

無法增加預留項目大小

嘗試在預留項目中新增更多運算單元時,如果遇到 Failed to allocate slots for reservation in the current system state 或 Failed to update reservation: Failed to allocate slots for reservation 等錯誤,通常是暫時性問題。如要緩解問題,請按照下列步驟操作:

  • 請減少運算單元數量,然後重試。
  • 如果嘗試使用較少時段仍失敗,請等待 15 分鐘,然後重試作業。

如果重試多次並等待 30 分鐘後,仍收到相同錯誤,請與 Cloud Customer Care 聯絡。

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

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

如要解決這個錯誤,請執行下列任一操作:

  • 在預留項目中新增較少的運算單元,確保要求不會超過配額限制。
  • 請在對應區域申請提高配額。詳情請參閱「要求提高配額」。

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

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

查詢和預留項目位於不同區域

預留項目是區域性資源。查詢會與查詢中參照的任何資料表位於相同位置。

如果資料表的位置與預留項目不符,查詢就不會使用預留項目,而是按照隨選定價執行 (或符合資格的批次載入和匯出工作,則使用免費共用運算單元集區)。

查詢 BigQuery Omni 資料表

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

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

如要使用預留項目中的運算單元,您必須建立指派作業,將專案、資料夾或組織指派給特定預留項目。確認專案有對應的預留項目指派作業。

工作類型不符

建立指派事項時,請務必選取正確的工作類型,否則工作不會使用預訂。

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

多陳述式查詢

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

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

正在擷取快取結果

查詢工作擷取快取結果時,預留項目欄位會留空,因為 BigQuery 不會執行任何運算,而是直接從臨時資料表擷取結果。

變更資料擷取資料列修改作業

如果您有變更資料擷取 (CDC) 資料表,BigQuery 會在 max_staleness 間隔內,以使用 BACKGROUND 指派類型的背景工作,套用待處理的資料列修改。如果沒有 BACKGROUND 指派作業,這些工作會採用隨選價格。建議您為專案建立BACKGROUND指派作業,以免產生非預期的隨選費用。您可以透過工作 ID 中的 queueworker_cdc_background_merge_coalesce 子字串,識別這些工作。

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

如果專案中找不到 ML_EXTERNAL 工作類型的預留項目指派作業,系統會依據隨選定價模式執行外部模型建立工作。QUERY 工作類型指派適用於標準 BigQuery ML 模型和矩陣因式分解模型 (需要 Enterprise 或 Enterprise Plus 版預留),而外部模型則需要 ML_EXTERNAL 指派。詳情請參閱「將運算單元指派給 BigQuery 工作負載」。

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

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

default-pipeline

根據預設,在 BigQuery 中批次載入或批次匯出資料時,會使用免費的共用運算單元集區。檢查這些載入或擷取工作時,預留項目欄位會顯示 default-pipeline。

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