本頁說明 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 的開頭必須是 |
資料庫限制
| 值 | 限制 |
|---|---|
| 每個執行個體的資料庫數 |
|
| 每個資料庫的角色 | 100 |
| 資料庫 ID 長度 | 2 至 30 個字元 |
| 儲存空間大小1 |
在大多數單區域、雙區域和多區域 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 (適用於主鍵)。