配額與限制

本頁說明 Spanner 的正式版配額和限制。配額和限制在 Google Cloud 控制台中可能會交替使用。

配額與限制的值隨時可能變動。

檢查及編輯配額的權限

如要查看配額,必須具備 serviceusage.quotas.get Identity and Access Management (IAM) 權限。

如要變更配額,必須具備 serviceusage.quotas.update IAM 權限。根據預設,下列預先定義的角色都擁有這項權限:擁有者、編輯者和配額管理員。

根據預設,「擁有者」和「編輯者」這些基本 IAM 角色和預先定義的「配額管理員」角色,都擁有這些權限。

查看配額

如要查看專案中資源的目前配額,請使用Google Cloud 控制台:

前往配額頁面

如要查看自訂執行個體設定的節點限制,請查看基本執行個體設定的節點限制。如要取得自訂執行個體設定的基本設定,請參閱「顯示執行個體設定詳細資料」。

提高配額

隨著您使用 Spanner 的時間越長,配額可能會隨之增加。如果您預期用量將有顯著增長,請提早幾天提出要求,確認配額大小是否足夠。

如要申請提高配額 (包括節點限制),請參閱「使用 Google Cloud 控制台管理配額」。

如果您有自訂執行個體設定,且需要超過 85 個節點的限制,請填寫「Request a Quota Increase for your Spanner Nodes」(要求提高 Spanner 節點配額) 表單。在表單中指定自訂執行個體設定的 ID。

節點限制

值 限制
每個執行個體設定的節點數

預設限制會因專案和執行個體設定而異。如要變更專案配額限制或申請提高限制,請參閱「提高配額」。

執行個體限制

值 限制
執行個體 ID 長度 2 至 64 個字元

免費試用執行個體限制

Spanner 免費試用執行個體有下列額外限制。如要提高或移除這些限制,請將免費試用執行個體升級為付費執行個體。

值 限制
儲存空間容量 10 GiB
資料庫限制 最多可建立五個資料庫
不支援的功能 備份與還原
服務水準協議 無服務水準協議
試用期長度 90 天免費試用期

地理區域分區限制

值 限制
每個執行個體的分區數量上限 20
每個資料庫的刊登位置數量上限 50
分區中每個節點的放置位置列數上限 1 億

已儲存查詢的限制

值 限制
每個專案的已儲存查詢數量上限 (包括其他 Google Cloud 產品的已儲存查詢) 10,000
每個查詢的大小上限 1 MiB

執行個體設定限制

值 限制
每個專案的自訂執行個體設定數量上限 100
自訂執行個體設定 ID 長度

8 到 64 個字元

自訂執行個體設定 ID 的開頭必須是 custom-

資料庫限制

值 限制
每個執行個體的資料庫數
  • 對於 1 個節點 (1,000 個處理單元) 以上的執行個體: 100 個資料庫
  • 如果執行個體的節點少於 1 個:每 100 個處理單元可建立 10 個資料庫
每個資料庫的角色 100
資料庫 ID 長度 2 至 30 個字元
儲存空間大小1
  • 對於 1 個節點 (1,000 個處理單元) 以上的執行個體: 每個節點 10 TiB
  • 節點數量少於 1 個的執行個體: 每 100 個處理單元 1024.0 GiB

在大多數單區域、雙區域和多區域 Spanner 執行個體設定中,每個節點的儲存空間容量上限為 10 TiB。詳情請參閱「效能和儲存空間改善項目」。

如果您使用分層儲存空間,每個節點最多可使用 10 TiB 的組合儲存空間 (SSD 和 HDD)。

備份會分開儲存,且不會計入這個上限。詳情請參閱「儲存空間使用率指標」。

請注意,Spanner 會根據執行個體內實際使用的儲存空間計費,而非總可用儲存空間。

備份與還原限制

值 限制
每個資料庫正在執行的備份建立作業數量 1 (僅適用於隨選備份)。 備份排程有自己的頻率限制,不受此限制影響。
每個執行個體正在進行的資料庫還原作業數量 (適用於還原的資料庫,而非備份)。 10
備份保留時間上限 1 年,包括閏年多出的一天。

結構定義限制

結構定義物件

值 限制
同一執行個體中所有資料庫內的結構定義物件總數 預設限制會因執行個體設定而異2

DDL 陳述式

值 限制
單一結構定義變更的 DDL 陳述式大小 10 MiB
由 GetDatabaseDdl 傳回,資料庫整個結構定義的 DDL 陳述式大小 10 MiB

圖表

值 限制
每個資料庫的屬性圖 250
屬性圖名稱長度 1 至 128 個字元

資料表

值 限制
每個資料庫的資料表數 5,000
資料表名稱長度 1 至 128 個字元
每個資料表的欄數 1,024
欄名稱長度 1 至 128 個字元
每個儲存格的資料大小上限 10 MiB
STRING 儲存格的大小 2,621,440 個 Unicode 字元
資料表索引鍵中的欄數

16

包含與任何上層資料表共用的索引鍵欄

資料表交錯深度

7

如果頂層資料表含有子資料表,則深度為 1。

如果頂層表格包含孫子表格,則深度為 2,後續的巢狀表格會相應增加深度。

每個資料列的主鍵或索引鍵大小上限

8 KiB

組成索引鍵之所有資料欄的加總大小。

每個資料列的非索引鍵欄大小總計

1600 MiB

包含資料表中每個資料列的所有非索引鍵欄大小

索引

值 限制
每個資料庫的索引數 10,000
每個資料表的索引數 128
索引名稱長度 1 至 128 個字元
索引鍵中的欄數

16

索引資料欄的數量 (STORING 資料欄除外),加上基本資料表中的主鍵欄數量

瀏覽次數

值 限制
每個資料庫的檢視畫面 5,000
檢視畫面名稱長度 1 至 128 個字元
巢狀結構深度

10

參照另一個檢視畫面的檢視畫面,巢狀結構深度為 1。如果某個檢視畫面參照另一個檢視畫面,而該檢視畫面又參照其他檢視畫面,則巢狀結構深度為 2,以此類推。

位置群組

值 限制
每個資料庫的區域群組數量上限 16 個 (1 個預設地區群組和 15 個選用的額外地區群組)
ssd_to_hdd_spill_timespan 選項的最低時間量 1 小時
「ssd_to_hdd_spill_timespan」選項允許的最長時間 365 天

查詢限制

值 限制
GROUP BY 子句中的欄數 1,000
IN 運算子中的值 10,000
函式呼叫 1,000
彙整次數 20
巢狀函式呼叫數 75
巢狀 GROUP BY 子句數 35
巢狀子查詢運算式數 25
巢狀 Subselect 陳述式數 60
圖表查詢產生的聯結 100
參數 950
查詢陳述式長度 100 萬個字元
STRUCT 個欄位 1,000
子查詢運算式子項數 50
查詢中的聯集數 200
圖形深度 量化路徑遍歷 100

建立、讀取、更新和刪除資料的限制

值 限制
提交大小 (包括索引和變更串流) 100 MiB
每個工作階段的並行讀取數 100
每次提交的變動次數 (適用於 Mutation API) (包括索引)3、10 80,000
每個 DML 陳述式 (包括索引) 的變動次數3,10 80,000
批次寫入要求中每個變動群組的變動次數 80,000
每個資料庫可同時執行的分區 DML 陳述式數量 20,000

管理作業限制

值 限制
管理動作要求大小4 1 MiB
管理動作的速率限制5

每位使用者每個專案每秒 5 次

(100 秒期間的平均次數)

要求限制

值 限制
非用於提交的要求大小6 10 MiB

變更串流限制

值 限制
每個資料庫的變更串流 10
變更串流觀看任何指定非索引鍵資料欄7 3
每個變更串流資料分割區的並行讀取器8 20

Data Boost 限制

值 限制
每個專案在 us-central1 中的並行 Data Boost 要求數 1000 9
其他區域中每個專案每個區域的並行 Data Boost 要求 400 9
每個專案每個區域的並行 Data Boost 要求 (以毫秒作業數計算) 1000000 9

佇列限制

值 限制
每個執行個體的佇列數 每 100 個處理單元可有 10 個佇列,最多 100 個佇列
每個區域中,每個專案的並行佇列接收器 TVF 2,000

預先分割 API 限制

值 限制
每個 API 要求新增的分割點 100
分割點 API 要求大小 1 MiB
執行個體中所有資料庫的每個節點新增分割點 50
每分鐘每個節點新增或更新的分割點 10
每天每個節點新增或更新的分割點數 200

附註

1. 為確保資料庫存取作業的高可用性和低延遲,Spanner 會根據執行個體的運算能力定義儲存空間限制:

  • 如果執行個體的節點少於 1 個 (1,000 個處理單元),Spanner 會為資料庫中每 100 個處理單元分配 1024.0 GiB 的資料。
  • 對於 1 個節點以上的執行個體,Spanner 會為每個節點分配 10 TiB 的資料。

舉例來說,如要為 1500 GiB 的資料庫建立執行個體,您需要將運算資源設為 200 個處理單元。在資料庫成長至超過 2048.0 GiB 之前,這個運算容量可確保執行個體不會超過限制。資料庫達到這個大小後,您需要再新增 100 個處理單元,才能讓資料庫擴充。否則,系統可能會拒絕寫入資料庫。詳情請參閱「資料庫儲存空間使用率建議」。

為確保成長體驗順暢,請在資料庫達到上限前新增運算容量。

2. 計入的結構定義物件包括 DDL 中描述的所有物件類型,例如資料表、資料欄、索引、序列等。結構定義物件限制是在執行個體層級強制執行,且取決於執行個體可用的處理單元。

  • 對於一個節點以上的執行個體,預設限制為一百萬個物件。
  • 如果執行個體的處理單元少於 1,000 個 (1 個節點),上限會與執行個體大小成正比減少。舉例來說,如果執行個體有 100 個處理單元,架構物件的上限為 100,000 個。

如要查看資料庫的結構定義物件計數,以及執行個體的物件限制,請在 Metrics Explorer 中尋找指標  和 。spanner.googleapis.com/instance/schema_objectsspanner.googleapis.com/instance/schema_object_count_limit如要進一步瞭解監控功能,請參閱「使用 Cloud Monitoring 監控執行個體」。

如果達到上限,Spanner 會禁止您執行超出上限的操作,例如:

3. 插入和更新作業會根據受影響的資料欄數量計算,且主鍵資料欄一律會受到影響。舉例來說,如果將值插入五個資料欄,插入新記錄可能算做五項突變。如果記錄有兩個主鍵欄,更新記錄中的三個欄也可能算做五項突變。無論受影響的欄數為何,刪除和刪除範圍作業都只會計為一次修改作業。從含有 ON DELETE CASCADE 註解的上層資料表中刪除資料列時,無論交錯的子資料列數量為何,系統同樣只會計為一次異動。例外狀況如下:如果您要刪除的資料列已定義次要索引,則對次要索引所做的變更會單獨計算。舉例來說,如果資料表有 2 個次要索引,刪除資料表中的一系列資料列會計為 1 個資料表突變,加上每個刪除資料列的 2 個突變,因為次要索引中的資料列可能會分散在鍵空間中,導致 Spanner 無法對次要索引呼叫單一刪除範圍作業。次要索引包含外部索引鍵支援索引。

如要找出交易的修改作業計數,請參閱「 擷取交易的提交統計資料」。

變更串流不會新增任何計入這項限制的突變。

4. 管理動作要求的限制不包括提交、附註 9 中列出的要求,以及結構定義變更。

5. 此頻率限制適用所有對 Admin API 的呼叫,包括對執行個體、資料庫或備份的長時間執行作業輪詢呼叫。

6. 此限制適用的要求包括建立資料庫、更新資料庫、讀取、串流讀取、執行 SQL 查詢,以及執行串流 SQL 查詢。

7. 如果變更串流監控整個資料表或資料庫,就會隱含監控該資料表或資料庫中的每個資料欄,因此會計入這項限制。

8. 這項限制適用於相同變更串流分區的並行讀取器,無論讀取器是 Dataflow 管道或直接 API 查詢。

9. 預設限制會因專案和區域而異。詳情請參閱「監控及管理 Data Boost 配額用量」。

10. 當您寫入具有產生的資料欄或具有預設值的資料欄的資料表時,系統會針對每個資料列,依下列方式計算寫入的突變次數:

  • 突變總數 = (明確寫入的欄數) + (產生的欄數或具有預設值的欄數) + (主鍵欄數)

舉例來說,如果您有一個資料表,其中有 2 個主鍵資料欄和 1 個產生的資料欄,插入單一資料列 (提供 2 個主鍵資料欄的值) 會計為 5 項突變:

  • 2 (適用於明確寫入的資料欄) + 1 (適用於產生的資料欄) + 2 (適用於主鍵)。