排解配額和限制錯誤
BigQuery 有各式各樣的配額與限制,可限制不同要求和作業的頻率和數量。配額的用途是保護基礎架構,並避免客戶產生超出預期的用量。本文說明如何診斷及減輕配額和限制造成的特定錯誤。
如果這份文件未列出您的錯誤訊息,請參閱錯誤訊息清單,其中提供更多一般錯誤資訊。
總覽
如果 BigQuery 作業因超出配額而失敗,API 會傳回 HTTP 403 Forbidden
狀態碼。回應主體會進一步說明已達到的配額。回應主體看起來會與下列內容類似:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Quota exceeded: ...",
"reason" : "quotaExceeded"
} ],
"message" : "Quota exceeded: ..."
}
酬載中的 message
欄位會說明超出的限制。例如,message
欄位可能會顯示 Exceeded rate limits: too many table
update operations for this table
。
一般來說,配額限制會被分為兩個類別,如回應酬載中的 reason
欄位所示。
rateLimitExceeded
。這個值表示短期限制。如要解決這些限制問題,請稍待幾秒再重試作業。在兩次重試之間使用「指數輪詢」。也就是說,每次重試之間的延遲時間會呈指數增加。quotaExceeded
。這個值表示長期限制。如果您達到長期配額上限,則至少應等待 10 分鐘,然後再重試作業。如果您持續達到其中一項長期配額限制,則應分析您的工作負載,以便找出緩解問題的方法。將工作負載最佳化或要求增加配額都有可能緩解問題。
如有 quotaExceeded
錯誤,請查看錯誤訊息,瞭解哪些配額已超過上限。接著分析工作負載,確認是否可以避免達到配額上限。
在某些情況下,您可以與 BigQuery 支援團隊聯絡或聯絡 Google Cloud 銷售人員,並申請提高配額,但我們建議您先嘗試本文中的建議。
診斷
如要診斷問題,請按照下列步驟操作:
使用
INFORMATION_SCHEMA
檢視畫面和區域限定符,分析基本問題。這些檢視區塊含有 BigQuery 資源的中繼資料,包括工作、預留項目和串流資料插入。舉例來說,以下查詢會使用
INFORMATION_SCHEMA.JOBS
檢視表列出過去一天內所有配額相關錯誤:SELECT job_id, creation_time, error_result FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')
將
REGION_NAME
替換為專案的區域。且必須以region-
開頭。舉例來說,如果是US
多區域,請使用region-us
。查看 Cloud 稽核記錄中的錯誤。
舉例來說,使用記錄檔探索工具時,以下查詢會在訊息字串中找出
Quota exceeded
或limit
的錯誤:resource.type = ("bigquery_project" OR "bigquery_dataset") protoPayload.status.code ="7" protoPayload.status.message: ("Quota exceeded" OR "limit")
在本例中,狀態碼
7
表示PERMISSION_DENIED
,這對應到 HTTP403
狀態碼。如需其他 Cloud 稽核記錄查詢範例,請參閱 BigQuery 查詢。
查詢佇列限制錯誤
如果專案嘗試將互動式或批次查詢排入佇列,但數量超出佇列限制,您可能會遇到這個錯誤。
錯誤訊息
Quota exceeded: Your project and region exceeded quota for max number of jobs that can be queued per project.
解決方法
這項上限無法提高。如要解決配額錯誤,請按照下列步驟操作:
暫停工作。如果發現某個程序或管道導致查詢次數增加,請暫停該程序或管道。
使用批次優先順序的工作。您可以將比互動式查詢更多的批次查詢加入佇列。
分發查詢。根據查詢性質和業務需求,在不同專案之間分配及分散負載。
分配跑步時間。在較長的時間範圍內分配負載。如果您的報表解決方案需要執行許多查詢,請嘗試在查詢開始時導入一些隨機性。舉例來說,請勿同時開始所有報表。
使用 BigQuery BI Engine。如果您在使用商業智慧 (BI) 工具建立資訊主頁時遇到這個錯誤,且該資訊主頁會查詢 BigQuery 中的資料,建議您使用 BigQuery BI Engine。使用 BigQuery BI Engine 是這個用途的最佳選擇。
最佳化查詢和資料模型。通常可以重新撰寫查詢,提高執行效率。舉例來說,如果查詢包含一般資料表運算式 (CTE)
WITH
子句,且查詢中有多個位置參照該子句,系統就會多次執行這項運算。最好將 CTE 執行的計算作業保留在臨時資料表中,然後在查詢中參照該資料表。多個聯結也可能導致效率不彰。在這種情況下,您可能需要考慮使用 巢狀和重複的資料欄。使用這項功能通常可改善資料的區域性、免除部分聯結需求,並整體減少資源耗用量和查詢執行時間。
最佳化查詢可降低費用,因此採用以運算量為準的計價模式時,您就能使用運算單元執行更多查詢。詳情請參閱「查詢效能最佳化簡介」。
最佳化查詢模型。BigQuery 並非關聯資料庫。不適合處理無限多的小型查詢。執行大量小型查詢會快速耗盡配額。這類查詢的執行效率不如使用較小資料庫產品時。BigQuery 是大型資料倉儲,主要用途就是儲存大量資料。最適合對大量資料執行分析查詢。
保存資料 (已儲存的表格)。在 BigQuery 中預先處理資料,並儲存在其他資料表中。舉例來說,如果您執行許多類似的運算密集型查詢,但條件不同,則結果不會快取。
WHERE
這類查詢每次執行時也會耗用資源。您可以預先計算資料並儲存在資料表中,藉此提升這類查詢的效能,並縮短處理時間。您可以使用SELECT
查詢資料表中的預先計算資料。您通常可以在 ETL 程序中擷取資料時執行這項操作,也可以使用排程查詢或具體化檢視區塊。使用模擬測試模式。以模擬測試模式執行查詢,估算讀取的位元組數,但不會實際處理查詢。
預覽資料表資料。如要試用或探索資料,而非執行查詢,請使用 BigQuery 的資料表預覽功能預覽資料表資料。
使用快取查詢結果。 所有查詢結果 (包括互動式與批次查詢) 皆會以快取方式存放在暫時性資料表中約 24 小時,但也有一些例外狀況。執行快取查詢時,仍會計入並行查詢限制,但使用快取結果的查詢作業速度,會比未使用快取結果的查詢作業快上許多,因為 BigQuery 不需計算結果集。
依資料欄分區的資料表分區修改次數配額錯誤
當資料表達到每日允許的分區修改次數配額時,BigQuery 就會傳回這個錯誤。分區修改次數包括所有載入工作、複製工作和查詢工作,這些工作會將資料附加至目的地分區或覆寫目的地分區。
如要查看「每個資料欄分區資料表每日可修改分區的次數上限」值,請參閱「分區資料表」一文。
錯誤訊息
Quota exceeded: Your table exceeded quota for Number of partition modifications to a column partitioned table
解決方法
這項配額無法增加。如要解決配額錯誤,請按照下列步驟操作:
- 變更資料表的分區,讓每個分區包含更多資料,以減少分區總數。舉例來說,您可以將分區依天改為依月,或是變更資料表的分區方式。
- 請改用叢集,而非分區。
-
如果您經常從儲存在 Cloud Storage 中的多個小型檔案載入資料,且每個檔案都使用一個工作,請將多個載入工作合併為單一工作。您可以透過以逗號分隔的清單 (例如
gs://my_path/file_1,gs://my_path/file_2
),或使用萬用字元 (例如gs://my_path/*
),從多個 Cloud Storage URI 載入資料。詳情請參閱「批次載入資料」。
- 舉例來說,如果您使用載入、選取或複製工作,將單一資料列附加至資料表,則應考慮將多個工作批次處理為一個工作。如果將 BigQuery 做為關聯式資料庫使用,效能不佳。最佳做法是避免頻繁執行單列附加動作。
- 如要以高速度附加資料,請考慮使用 BigQuery Storage Write API。建議您使用這項解決方案,以高效能方式擷取資料。BigQuery Storage Write API 具備強大的功能,包括單次傳送語意。如要瞭解限制和配額,請參閱「Storage Write API」一文;如要瞭解使用這項 API 的費用,請參閱「BigQuery 資料擷取定價」一文。
-
如要監控資料表上修改的分區數量,請使用
INFORMATION_SCHEMA
檢視區塊。
串流資料插入配額錯誤
本節針對排解以串流方式將資料傳入 BigQuery 的配額錯誤提供相關提示。
在特定區域中,如果您並未在每個資料列的 insertId
欄位中填入資料,則串流資料插入會含有較高的配額。如要進一步瞭解串流資料插入的配額,請參閱串流資料插入。BigQuery 串流的配額相關錯誤取決於 insertId
是否存在。
錯誤訊息
如果 insertId
欄位為空白,則可能會發生下列配額錯誤:
配額限制 | 錯誤訊息 |
---|---|
每項專案每秒位元組數 | 在區域 REGION 中專案 PROJECT_ID gaia_id 為 GAIA_ID 的實體超過每秒插入位元組數的配額。 |
如果在 insertId
欄位填入資料,則可能會發生下列配額錯誤:
配額限制 | 錯誤訊息 |
---|---|
每項專案每秒資料列數量 | 您在 REGION 的專案 PROJECT_ID 超過每秒串流資料插入資料列的配額。 |
每個資料表每秒資料列數量 | 您的資料表 TABLE_ID 超過每秒串流資料插入資料列的配額。 |
每個資料表每秒位元組數 | 您的資料表 TABLE_ID 超出每秒串流資料插入位元組數的配額。 |
insertId
欄位的用途是簡化插入的資料列。如果同一個 insertId
的多個插入項目均於幾分鐘之內抵達,則 BigQuery 會寫入單一版本的記錄。但是,我們無法保證系統會自動刪除重複的內容。為了達到最大的串流總處理量,建議您不要加入 insertId
,改成手動刪除重複內容。詳情請參閱確保資料一致性一文。
診斷
使用 STREAMING_TIMELINE_BY_*
檢視表來分析串流流量。這些檢視表會每隔一分鐘匯總串流統計資料,並依錯誤代碼分類。結果中會顯示配額錯誤,且 error_code
等於 RATE_LIMIT_EXCEEDED
或 QUOTA_EXCEEDED
。
根據已達到的特定配額上限查看 total_rows
或 total_input_bytes
。如果錯誤是資料表層級的配額,請依 table_id
進行篩選。
舉例來說,下列查詢顯示每分鐘擷取的位元組總數和配額錯誤總數:
SELECT start_timestamp, error_code, SUM(total_input_bytes) as sum_input_bytes, SUM(IF(error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'), total_requests, 0)) AS quota_error FROM `region-REGION_NAME`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT WHERE start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) GROUP BY start_timestamp, error_code ORDER BY 1 DESC
解決方法
如要解決配額錯誤,請按照下列步驟操作:
如果您使用
insertId
欄位來刪除重複的內容,而您的專案位於支援較高串流配額的區域,則建議移除insertId
欄位。這個解決方案可能需要執行一些其他步驟,以手動方式刪除重複的資料內容。詳情請參閱手動移除重複內容。如果您並非使用
insertId
,或是無法加以移除,請監控 24 小時內的串流流量,並分析配額錯誤:如果您看到的大多是
RATE_LIMIT_EXCEEDED
錯誤而不是QUOTA_EXCEEDED
錯誤,而您的整體流量低於配額的 80%,則這些錯誤可能表示流量暫時暴增。您可以在每次重試之間使用指數輪詢重試作業,以處理這些錯誤。如果您使用 Dataflow 工作插入資料,請考慮改用載入工作,而非串流插入。詳情請參閱「設定插入方法」。如果您使用 Dataflow 和自訂 I/O 連接器,請考慮改用內建 I/O 連接器。詳情請參閱自訂 I/O 模式。
如果您看到
QUOTA_EXCEEDED
錯誤,或整體流量持續超過配額的 80%,請提交增加配額的要求。詳情請參閱「要求調整配額」。您也可以考慮使用較新的 Storage Write API 取代串流插入,因為這項 API 的輸送量較高、價格較低,而且提供許多實用功能。
載入 CSV 檔案配額錯誤
如果您使用 bq load
指令載入大型 CSV 檔案,並搭配 --allow_quoted_newlines
旗標,可能會遇到這個錯誤。
錯誤訊息
Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...
解決方法
如要解決配額錯誤,請按照下列步驟操作:
- 將
--allow_quoted_newlines
旗標設為false
。 - 將 CSV 檔案分割成較小的區塊,每個區塊的大小不得超過 4 GB。
如要進一步瞭解將資料載入 BigQuery 時的限制,請參閱「載入工作」。
資料表匯入或查詢附加配額錯誤
如果資料表達到標準資料表的每日資料表作業次數上限,BigQuery 就會傳回這則錯誤訊息。資料表作業包括下列所有作業的總和:載入工作、複製工作和查詢工作,這些作業會將資料附加至目的地資料表或覆寫目的地資料表。
如要查看「每日資料表作業」限制的值,請參閱「標準資料表」一文。
錯誤訊息
Your table exceeded quota for imports or query appends per table
診斷
如果尚未找出大部分表格作業的來源,請執行下列步驟:
記下失敗的查詢、載入或複製工作要寫入的專案、資料集和資料表。
使用
INFORMATION_SCHEMA.JOBS_BY_*
表格進一步瞭解會修改資料表的工作。以下範例使用
JOBS_BY_PROJECT
,找出過去 24 小時內依職缺類型分組的每小時職缺數。如果預期多個專案會寫入資料表,請將JOBS_BY_PROJECT
替換成JOBS_BY_ORGANIZATION
。SELECT TIMESTAMP_TRUNC(creation_time, HOUR), job_type, count(1) FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND destination_table.project_id = "my-project-id" AND destination_table.dataset_id = "my_dataset" AND destination_table.table_id = "my_table" GROUP BY 1, 2 ORDER BY 1 DESC
解決方法
這項配額無法增加。如要解決配額錯誤,請按照下列步驟操作:
-
如果您經常從儲存在 Cloud Storage 中的多個小型檔案載入資料,且每個檔案都使用一個工作,請將多個載入工作合併為單一工作。您可以透過以逗號分隔的清單 (例如
gs://my_path/file_1,gs://my_path/file_2
),或使用萬用字元 (例如gs://my_path/*
),從多個 Cloud Storage URI 載入資料。詳情請參閱「批次載入資料」。
- 舉例來說,如果您使用載入、選取或複製工作,將單一資料列附加至資料表,則應考慮將多個工作批次處理為一個工作。如果將 BigQuery 做為關聯式資料庫使用,效能不佳。最佳做法是避免頻繁執行單列附加動作。
- 如要以高速度附加資料,請考慮使用 BigQuery Storage Write API。建議您使用這項解決方案,以高效能方式擷取資料。BigQuery Storage Write API 具備強大的功能,包括單次傳送語意。如要瞭解限制和配額,請參閱「Storage Write API」一文;如要瞭解使用這項 API 的費用,請參閱「BigQuery 資料擷取定價」一文。
-
如要監控資料表上修改的分區數量,請使用
INFORMATION_SCHEMA
檢視區塊。
資料表中繼資料更新作業的頻率上限錯誤
如果資料表達到標準資料表的中繼資料更新作業頻率上限,BigQuery 就會傳回這項錯誤。資料表作業包括下列所有工作:載入工作、複製工作和查詢工作,這些工作會將資料附加至目的地資料表、覆寫目的地資料表,或是使用 DML DELETE
、INSERT
、MERGE
、TRUNCATE TABLE
或 UPDATE
將資料寫入資料表。
如要查看「每個資料表的資料表中繼資料更新作業頻率上限」值,請參閱「標準資料表」一節。
錯誤訊息
Exceeded rate limits: too many table update operations for this table
診斷
中繼資料表更新可能來自修改資料表中繼資料的 API 呼叫,或修改資料表內容的工作。如果尚未找出資料表中繼資料更新作業的主要來源,請按照下列步驟操作:
找出 API 呼叫
前往 Google Cloud 導覽選單>「記錄檔探索工具」:
,依序選取「記錄」執行下列查詢,篩選記錄以查看資料表作業:
resource.type="bigquery_dataset" protoPayload.resourceName="projects/my-project-id/datasets/my_dataset/tables/my_table" (protoPayload.methodName="google.cloud.bigquery.v2.TableService.PatchTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.UpdateTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.InsertTable")
找出所需的工作
以下查詢會傳回過去一天內,專案中修改受影響資料表的作業清單。如果預期機構中的多個專案會寫入資料表,請將 JOBS_BY_PROJECT
替換為 JOBS_BY_ORGANIZATION
。
SELECT job_id, user_email, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND destination_table.project_id = "my-project-id" AND destination_table.dataset_id = "my_dataset" AND destination_table.table_id = "my_table"
詳情請參閱 BigQuery 稽核記錄總覽。
解決方法
這項配額無法增加。如要解決配額錯誤,請按照下列步驟操作:
- 降低資料表中繼資料的更新頻率。
- 在工作或資料表作業之間加入延遲時間,確保更新率在限制範圍內。
如要插入或修改資料,請考慮使用 DML 作業。DML 作業不受每個資料表的資料表中繼資料更新作業頻率上限限制。
DML 作業有其他限制和配額。詳情請參閱「使用資料操縱語言 (DML)」。
-
如果您經常從儲存在 Cloud Storage 中的多個小型檔案載入資料,且每個檔案都使用一個工作,請將多個載入工作合併為單一工作。您可以透過以逗號分隔的清單 (例如
gs://my_path/file_1,gs://my_path/file_2
),或使用萬用字元 (例如gs://my_path/*
),從多個 Cloud Storage URI 載入資料。詳情請參閱「批次載入資料」。
- 舉例來說,如果您使用載入、選取或複製工作,將單一資料列附加至資料表,則應考慮將多個工作批次處理為一個工作。如果將 BigQuery 做為關聯式資料庫使用,效能不佳。最佳做法是避免頻繁執行單列附加動作。
- 如要以高速度附加資料,請考慮使用 BigQuery Storage Write API。建議您使用這項解決方案,以高效能方式擷取資料。BigQuery Storage Write API 具備強大的功能,包括單次傳送語意。如要瞭解限制和配額,請參閱「Storage Write API」一文;如要瞭解使用這項 API 的費用,請參閱「BigQuery 資料擷取定價」一文。
-
如要監控資料表上修改的分區數量,請使用
INFORMATION_SCHEMA
檢視區塊。
API 要求錯誤次數上限
當您達到每個使用者每個方法對 BigQuery API 的 API 要求數量速率限制時,BigQuery 會傳回這項錯誤。舉例來說,服務帳戶的 tables.get
方法呼叫,或是不同使用者電子郵件地址的 jobs.insert
方法呼叫。詳情請參閱 BigQuery API 中的「每個方法每個使用者每秒最多可發出的 API 要求數」速率限制。
錯誤訊息
Quota exceeded: Your user_method exceeded quota for concurrent api requests per user per method.
診斷
如果尚未找出達到此速率限制的方法,請執行下列操作:
服務帳戶
在 Google Cloud 控制台中,前往「API Dashboard」(API 資訊主頁)。
如需查看 API 詳細用量資訊的操作說明,請參閱「使用 API 資訊主頁」。
在 API 資訊主頁中,選取「BigQuery API」。
如要查看更詳細的使用情況資訊,請選取「指標」,然後執行下列操作:
在「選取圖表」中,選取「依 API 方法劃分的流量」。
依服務帳戶的憑證篩選圖表。在發現錯誤的時間範圍內,您可能會看到某個方法的尖峰。
API 呼叫
部分 API 呼叫會在 Cloud Logging 的 BigQuery 稽核記錄中記錄錯誤。如要找出達到上限的方法,請按照下列步驟操作:
前往 Google Cloud 控制台,依序選取 Google Cloud 導覽選單 >「Logs Explorer」,為專案啟用記錄檔探索工具:
>「Logging」執行下列查詢來篩選記錄:
resource.type="bigquery_resource" protoPayload.authenticationInfo.principalEmail="<user email or service account>" "Too many API requests per user per method for this user_method" In the log entry, you can find the method name under the property protoPayload.method_name.
詳情請參閱 BigQuery 稽核記錄總覽。
解決方法
如要解決配額錯誤,請按照下列步驟操作:
減少 API 要求數量,或在多個 API 要求之間加入延遲,確保要求數量不超過上限。
如果只是偶爾超出限制,您可以針對這項特定錯誤,採用指數輪詢重試。
如果經常插入資料,建議使用串流插入,因為串流插入不受 BigQuery API 配額影響。不過,串流插入 API 會產生相關費用,且有專屬的限制和配額。
如要瞭解串流資料插入費用,請參閱 BigQuery 定價。
使用 Dataflow 和 BigQuery I/O 連接器將資料載入 BigQuery 時,您可能會遇到
tables.get
方法的這項錯誤。如要解決這個問題,請按照下列步驟操作:將目的地資料表的建立處理方式設為
CREATE_NEVER
。詳情請參閱「建立處置方式」。使用 Apache Beam SDK 2.24.0 以上版本。在舊版 SDK 中,
CREATE_IF_NEEDED
處置會呼叫tables.get
方法,檢查資料表是否存在。
如要申請提高配額,請與支援團隊或銷售人員聯絡。如需額外配額,請參閱「申請提高配額」。申請增加配額可能需要幾天才能處理完畢。為提供更多要求相關資訊,建議您在要求中加入工作優先順序、執行查詢的使用者,以及受影響的方法。
專案掃描的免費查詢位元組數超出配額
在免費方案中執行查詢時,如果帳戶達到每月可查詢的資料大小上限,BigQuery 就會傳回這項錯誤。如要進一步瞭解查詢 (分析),請參閱「免費用量層級」。
錯誤訊息
Your project exceeded quota for free query bytes scanned
解決方法
如要繼續使用 BigQuery,請將帳戶升級為 Cloud Billing 付費帳戶。
每個專案配額錯誤的每秒 tabledata.list
位元組數上限
當錯誤訊息中提及的專案編號達到每秒可透過專案中的 tabledata.list
API 呼叫讀取的資料大小上限時,BigQuery 就會傳回這項錯誤。詳情請參閱「每分鐘最多 tabledata.list
位元組」。
錯誤訊息
Your project:[project number] exceeded quota for tabledata.list bytes per second per project
解決方法
如要解決這項錯誤,請按照下列步驟操作:
- 一般來說,我們建議您盡量不要超過這個上限。舉例來說,您可以延長時間間隔,延遲傳送要求。如果錯誤不常發生,實作指數輪詢重試即可解決這個問題。
- 如果用途是從資料表快速且頻繁地讀取大量資料,建議使用 BigQuery Storage Read API,而非
tabledata.list
API。 如果上述建議無法解決問題,請按照下列步驟,透過Google Cloud 主控台 API 資訊主頁要求增加配額:
- 前往Google Cloud 控制台 API 資訊主頁。
- 在資訊主頁中,篩選配額:
Tabledata list bytes per minute (default quota)
。 - 選取配額,然後按照「要求調整配額」一文中的指示操作。
審查及處理要求可能需要幾天的時間。
針對資料表待處理的 DML 陳述式過多
這個錯誤表示針對相同資料表執行的並行變動 DML 陳述式 (UPDATE
、DELETE
、MERGE
) 數量,已超過資料操縱語言 (DML) 配額限制。這項配額限制適用於每個資料表,且僅適用於變動 DML,不包括 INSERT
。
解決方法
請按照 DML 陳述式的最佳做法,批次處理 DML 工作。
每個專案每日的複製工作數量上限 (配額錯誤)
如果專案中執行的複製工作數超過每日上限,BigQuery 就會傳回這項錯誤。如要進一步瞭解每日複製工作數上限,請參閱「複製工作」一文。
錯誤訊息
Your project exceeded quota for copies per project
診斷
如要收集更多有關複製作業來源的資料,可以嘗試下列做法:
如果複製作業位於單一或少數幾個區域,您可以嘗試查詢該特定區域的
INFORMATION_SCHEMA.JOBS
表格。例如:SELECT creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id FROM `PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" order by creation_time DESC
您也可以視需要調整時間間隔。
如要查看所有地區的所有複製工作,請在 Cloud Logging 中使用下列篩選器:
resource.type="bigquery_resource" protoPayload.methodName="jobservice.insert" protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
解決方法
- 如果頻繁複製作業的目的是建立資料快照,建議改用資料表快照。相較於複製完整資料表,資料表快照的費用較低,速度也較快。
- 如要要求增加配額,請與支援團隊或銷售人員聯絡。審查及處理要求可能需要幾天的時間。建議在要求中說明優先順序、用途和專案 ID。
超出每日擷取位元組配額錯誤
如果匯出作業超出專案的預設每日上限 50 TiB (太位元組),BigQuery 就會傳回這項錯誤。如要進一步瞭解匯出工作限制,請參閱匯出工作。
錯誤訊息
Your usage exceeded quota for ExtractBytesPerDay
診斷
如果匯出的資料表大於 50 TiB,匯出作業會失敗,因為超過匯出限制。如要解決這個問題,請參閱這篇文章。如要匯出特定資料表分區的資料表資料,可以使用分區修飾符來識別要匯出的分區。
如要收集最近幾天的匯出資料用量,可以嘗試下列做法:
查看專案配額 使用篩選條件,例如
Name: Extract bytes per day
或Metric: bigquery.googleapis.com/quota/extract/bytes
,以及「顯示用量」 圖表,即可查看幾天內的用量趨勢。或者,您也可以查詢
INFORMATION_SCHEMA.JOBS_BY_PROJECT
,查看幾天內的總擷取位元組數。舉例來說,下列查詢會傳回過去 7 天內,EXTRACT
工作每天處理的位元組總數。SELECT TIMESTAMP_TRUNC(creation_time, DAY) AS day, SUM ( total_bytes_processed ) / POW(1024, 3) AS total_gigabytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP() AND job_type = "EXTRACT" GROUP BY 1 ORDER BY 2 DESC
然後找出耗用位元組數超出預期的特定工作,進一步縮小搜尋結果範圍。以下範例會傳回過去 7 天內處理超過 100 GB 資料的前 100 個
EXTRACT
工作。SELECT creation_time, job_id, total_bytes_processed/POW(1024, 3) AS total_gigabytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP() AND job_type="EXTRACT" AND total_bytes_processed > (POW(1024, 3) * 100) ORDER BY total_bytes_processed DESC LIMIT 100
您也可以使用工作探索器,並搭配 Bytes processed more than
等篩選器,篩選出指定時間範圍內的高處理量工作。
解決方法
如要解決這項配額錯誤,其中一個方法是建立運算單元保留項目,然後將專案指派給具有 PIPELINE 工作類型的保留項目。由於這項作業使用的是專屬預訂,而非免費共用運算單元集區,因此可以略過限制檢查。如有需要,您可以刪除預留項目,以便日後使用共用運算單元集區。
如要瞭解如何匯出超過 50 TiB (太位元組) 的資料,請參閱匯出工作的附註部分。
包含遠端函式的並行查詢數量上限
如果含有遠端函式的並行查詢數量超過上限,BigQuery 就會傳回這項錯誤。
如要進一步瞭解遠端函式的限制,請參閱遠端函式。
錯誤訊息
Exceeded rate limits: too many concurrent queries with remote functions for this project
診斷
如要瞭解包含遠端函式的並行查詢限制,請參閱「遠端函式限制」。
解決方法
隨機播放大小上限錯誤
如果專案超出可供隨機排序作業使用的磁碟和記憶體大小上限,BigQuery 就會傳回這項錯誤。
這項配額的計算方式是以預訂為單位,並根據預訂項目將配額分配給各個專案。Cloud Customer Care 無法修改配額。如要進一步瞭解用量,請查詢 INFORMATION_SCHEMA.JOBS_TIMELINE
檢視畫面。
錯誤訊息
您收到下列其中一則錯誤訊息:
Quota exceeded: Your project exceeded quota for total shuffle size limit.
Resources exceeded: Your project or organization exceeded the maximum disk and memory limit available for shuffle operations. Consider provisioning more slots, reducing query concurrency, or using more efficient logic in this job.
解決方法
如要解決這項錯誤,請按照下列步驟操作:
CREATE MODEL
陳述式數量上限
這項錯誤表示您已超出 CREATE MODEL 陳述式的配額。
錯誤訊息
Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.
解決方法
如果超出 CREATE MODEL
陳述式的配額,請傳送電子郵件至 bqml-feedback@google.com,要求增加配額。