本文說明 Azure Cosmos DB 資源的預設配額和限制。 它可協助您有效地管理作業、儲存體和輸送量。
儲存體和資料庫作業
在訂閱下建立 Azure Cosmos DB 帳戶之後,即可透過建立資料庫、容器和項目來管理帳戶中的資料。
佈建的輸送量
您可以在容器層級或資料庫層級以要求單位 (RU) 或每秒要求單位 (RU/秒) 來配置輸送量。 下表列出每個容器/資料庫的儲存體和輸送量限制。 儲存體是指資料與索引儲存體的合併量。
| 資源 | 限制 |
|---|---|
| 每個容器的 RU 數上限 (專用輸送量佈建模式) | 1,000,000 ¹ |
| 每個資料庫的 RU 數上限 (共用輸送量佈建模式) | 1,000,000 ¹ |
| 每個分割區的 RU 數目上限 (邏輯與實體) | 10,000 |
| 每個 (邏輯) 分割區在所有項目上的儲存體上限 | 20 GB |
| 相異 (邏輯) 分割區索引鍵的數目上限 | 無限制 |
| 每個容器的儲存體上限 | 無限制 |
| 每個帳戶的附件大小上限 (附件功能即將停用) | 2 GB |
| 每 1 GB 所需的 RU 數/秒下限 | 1 RU/秒 |
¹ 提出 Azure 支援票證以增加每個容器或資料庫的最大 RU。
² 若要了解管理工作負載 (包含需要更高儲存體或輸送量限制的分割區索引鍵) 的最佳做法,請參閱建立綜合分割區索引鍵。 如果您的工作負載已達到生產期間 20 GB 的邏輯分割區限制,建議您以不同的分割區索引鍵重新架構應用程式,作為長期解決方案。 若要重新架構您的應用程式,請要求暫時增加現有應用程式的邏輯分割區索引鍵限制。 提出 Azure 支援票證,並選取 [暫時增加容器的邏輯分割區索引鍵大小] 配額類型。 要求暫時增加只是權宜之計,所以不建議作為長期解決方案,因為限制增加後,無法獲得 SLA 保證。 若要移除設定,請提出支援票證,並選取配額類型 [將容器的邏輯分割區索引鍵大小還原為預設值 (20 GB)]。 您可以在刪除資料以符合 20 GB 邏輯分割區限制,或使用不同的分割區索引鍵重新架構應用程式之後,提交此支援票證。
輸送量下限
使用手動輸送量的 Azure Cosmos DB 容器 (或共用輸送量資料庫),最小輸送量必須為 400 RU/秒。 當容器成長時,Azure Cosmos DB 需要輸送量下限,以確保資源 (資料庫或容器) 擁有足夠的資源來進行其作業。
您可從 Azure 入口網站或軟體開發套件 (SDK) 擷取容器或資料庫的目前和最小輸送量。 如需詳細資訊,請參閱在容器和資料庫中配置輸送量。
實際的最小 RU/秒可能會根據您的帳戶設定而有所不同。 您可以使用 Azure 監視器計量,檢視資源上的佈建輸送量 (RU/秒) 和儲存體歷程記錄。
容器上的輸送量下限
使用本節估計容器的最小輸送量。
手動輸送量
若要估計具有手動輸送量的容器所需的最小輸 RU/s,請尋找下列項目中的最大值:
- 400 RU/秒
- 目前的儲存體 (GB) * 1 RU/秒
- 曾在容器上佈建的最高 RU/秒除以 100
例如,容器已佈建 400 RU/秒和 0 GB 的儲存體。 您將輸送量增加到 50000 RU/秒,並匯入 20 GB 的資料。 最小 RU/秒現在 MAX(400, 20 * 1 RU/s per GB, 50,000 RU/s / 100) = 500 RU/秒。 經過一段時間後,儲存體會增加至 2,000 GB。 最小 RU/秒現在 MAX(400, 2000 * 1 RU/s per GB, 50,000 / 100) = 2000 RU/秒。
自動調整輸送量
若要估計具有自動調整輸送量的容器所需的自動調整最大值 RU/s,請尋找下列項目中的最大值:
- 1000 RU/秒
- 目前的儲存體 (GB) * 10 RU/秒
- 曾在容器上佈建的最高 RU/秒除以 10
例如,您的容器已佈建 1000 RU/秒和 0 GB 的儲存體。 您將輸送量增加到 50000 RU/秒,並匯入 20 GB 的資料。 最小 RU/上限秒現在 MAX(1000, 20 * 10 RU/s per GB, 50,000 RU/s / 10) = 5000 RU/秒。 經過一段時間後,儲存體會增加至 2,000 GB。 最小 RU/秒上限現在 MAX(1000, 2000 * 10 RU/s per GB, 50,000 / 10) = 20,000 RU/秒。
共用輸送量資料庫的最大輸送量
使用本節來估計跨容器共用輸送量的資料庫最小輸送量。
手動輸送量
若要估計具有手動輸送量的共用輸送量資料庫所需的最小 RU/s,請尋找下列項目中的最大值:
- 400 RU/秒
- 目前的儲存體 (GB) * 1 RU/秒
- 曾在資料庫上佈建的最高 RU/秒除以 100
- 400 + MAX(容器計數 - 25, 0) * 100 RU/秒
例如,您的資料庫已佈建 400 RU/秒、15 GB 的儲存體和 10 個容器。 最小 RU/秒 MAX(400, 15 * 1 RU/s per GB, 400 / 100, 400 + 0 ) = 400 RU/秒。 如果資料庫中有 30 個容器,則最小 RU/秒會是 400 + MAX(30 - 25, 0) * 100 RU/s = 900 RU/秒。
自動調整輸送量
若要估計具有自動調整輸送量的容器所需的共用輸送量資料庫,請尋找下列項目中的最大值:
- 1000 RU/秒
- 目前的儲存體 (GB) * 10 RU/秒
- 曾在資料庫上佈建的最高 RU/秒除以 10
- 1000 + MAX(容器計數 - 25, 0) * 1000 RU/秒
例如,您的資料庫已佈建 1000 RU/秒、15 GB 的儲存體和 10 個容器。 自動調整資料庫的最小 RU/秒上限為 MAX(1000, 15 * 10 RU/s per GB, 1000 / 10, 1000 + 0 ) = 1000 RU/秒。 如果資料庫中有 30 個容器,則最小 RU/秒上限是 1000 + MAX(30 - 25, 0) * 1000 RU/s = 5000 RU/秒。
總而言之,以下是使用佈建輸送量時的已佈建 RU 下限。
| 佈建類型 | 資源 | 限制 |
|---|---|---|
| 手動輸送量 | 每個容器的 RU 數下限 (專用輸送量佈建模式搭配手動輸送量) | 400 |
| 手動輸送量 | 每個資料庫的 RU 數下限 (共用輸送量佈建模式搭配手動輸送量 | 前 25 個容器的 400 RU/秒。 |
| 自動調整輸送量 | 每個容器的最小 RU 數上限 (專用輸送量佈建模式搭配自動輸送量) | 1000 |
| 自動調整輸送量 | 每個資料庫的最小 RU 數上限 (共用輸送量佈建模式搭配自動輸送量) | 前 25 個容器的 1000 RU/秒。 |
Azure Cosmos DB 可透過 SDK 或入口網站,支援程式設計調整每個容器或資料庫的輸送量 (RU/秒)。
每個資源都可在最小 RU/秒之間進行同步和立即調整達最小 RU/秒的 100 倍,取決於目前已佈建的 RU/秒和資源設定。 如果要求的輸送量值超出範圍,則會以非同步方式執行調整。 視容器中所要求的輸送量和資料儲存體大小而定,非同步調整可能需要數分鐘到數小時的時間才能完成。 深入了解。
無伺服器
無伺服器可讓您以耗用量為基礎的方式來使用 Azure Cosmos DB 資源。 下表列出每個容器/資料庫的儲存體和輸送量高載限制。 這些限制無法增加。 針對更多儲存體需求,配置額外的無伺服器帳戶。
| 資源 | 限制 |
|---|---|
| 每個容器的最大 RU/秒 | 20,000* |
| 每個 (邏輯) 分割區在所有項目上的儲存體上限 | 20 GB |
| 每個容器的儲存體上限 | 1 TB |
*最大 RU/秒可用性取決於儲存在容器中的資料。 請參閱無伺服器效能
控制平面
Azure Cosmos DB 具有資源提供者,可讓您在 Azure Cosmos DB 帳戶中建立、更新和刪除資源。 資源提供者會與整體 Azure 資源管理層介面,這是 Azure 的部署和管理服務。
使用以下工具建立及管理 Azure Cosmos DB 資源:
- Azure 入口網站
- Azure PowerShell
- Azure CLI
- Azure Resource Manager JSON/Bicep 範本
- Azure REST API
- Azure 管理 SDK
- Terraform
- Pulumi
您也可以從應用程式中使用的 Azure Cosmos DB 資料平面 SDK 存取此管理層,以在帳戶內建立和管理資源。 資料平面 SDK 也會在與服務的初始連線期間提出控制平面要求,以執行列舉資料庫和容器等動作,以及要求帳戶金鑰進行驗證。
每個 Azure Cosmos DB 帳戶都有一個主要磁碟分割,其中包含帳戶的所有中繼資料。 它也有少量的輸送量來支援控制平面作業。 建立、讀取、更新或刪除此中繼資料的控制平面要求會耗用此輸送量。 當控制平面作業所耗用的輸送量超過此數量時,作業會受到速率限制,與 Azure Cosmos DB 中的資料平面作業相同。 不過,不同於資料作業的輸送量,主要磁碟分割的輸送量無法增加。
某些控制平面作業不會耗用主要磁碟分割輸送量,例如取得或列出金鑰。 不過,與 Azure Cosmos DB 帳戶內資料的要求不同,Azure 中的資源提供者並非針對高要求量而設計。 超過連續 5 分鐘期間內持續層級上記錄限制的控制面板作業,可能會遇到在 Azure Cosmos DB 資源上進行節流處理的要求,以及失敗或不完整的作業。
您可以瀏覽 Azure Cosmos DB 帳戶的深入解析索引標籤來監視控制平面作業。 如需詳細資訊,請參閱監視控制平面要求。 您可以自訂這些深入解析、使用 Azure 監視器和建立活頁簿來監視中繼資料要求並設定警示。
資源限制
下表資料表列出每個訂用帳戶或帳戶的資源限制。
| 資源 | 限制 |
|---|---|
| 每個訂閱的帳戶數目上限 | 預設為 250 ¹ |
| 每個帳戶的資料庫和容器數目上限 | 500 平方米 |
| 中繼資料作業的帳戶所支援的最大輸送量 | 240 RU/秒 |
¹ Microsoft 內部客戶的預設限制不同。 建立 Azure 支援要求來增加這些限制,最多 1,000。 Cosmos DB 保留刪除任何空白資料庫帳戶的權利,亦即沒有資料庫/集合。 ² 此限制無法增加。 總數包括帳戶內的資料庫和容器 (例如,1 個資料庫和 499 個容器,或 250 個資料庫和 250 個容器)。
要求限制
下列資料表列出每個帳戶每 5 分鐘間隔的要求限制,除非另有指定。
| 作業 | 限制 |
|---|---|
| 清單上限或取得金鑰 | 500 ¹ |
| 建立資料庫和容器上限 | 500 |
| 取得或列出資料庫和容器上限 | 500 ¹ |
| 更新佈建的輸送量上限 | 25 |
| 區域性容錯移轉上限 | 10 (每小時) ² |
先前未定義的所有作業 (PUT、POST、PATCH、DELETE、GET) 數目上限 |
500 |
¹ 針對 SDK 執行個體使用單一用戶端,以及在該執行個體存留期的要求之間快取金鑰和資料庫和容器參考。 ² 區域性容錯移轉只適用於單一區域寫入帳戶。 多區域寫入帳戶不需要變更或允許寫入區域變更。
Azure Cosmos DB 會自動地定期備份您的資料。 如需備份保留間隔和時段的詳細資料,請參閱在 Azure Cosmos DB 中進行線上備份及隨選資料還原。
每個帳戶的限制
以下是每個帳戶的限制。
佈建的輸送量
| 資源 | 限制 |
|---|---|
| 每個帳戶的資料庫和容器數目上限 | 500 |
| 每個資料庫 (具有共用輸送量) 的容器數目上限 | 25 |
| 區域數目上限 | 無限制 (所有 Azure 區域) |
無伺服器
| 資源 | 限制 |
|---|---|
| 每個帳戶的資料庫和容器數目上限 | 500 |
| 區域數目上限 | 1 (任何 Azure 區域) |
每個容器的限制
Azure Cosmos DB 容器可根據所使用的 API,分別代表集合、資料表或圖表。 容器支援唯一索引鍵條件約束、預存程序、觸發程序和使用者定義函式 (UDF),以及編製索引原則的設定。 下表列出容器內設定特定的限制。
| 資源 | 限制 |
|---|---|
| 資料庫或容器名稱的長度上限 | 255 |
| 每個容器的預存程序數目上限 | 100 ¹ |
| 每個容器的 UDF 數目上限 | 50 ¹ |
| 每個容器的唯一索引鍵數目上限 | 10 ¹ |
| 每個唯一索引鍵條件約束的路徑數目上限 | 16 ¹ |
| 存留時間 (TTL) 值上限 | 2,147,483,647 |
¹ 建立 Azure 支援要求,增加每個容器的任一項限制。
每個項目的限制
Azure Cosmos DB 項目可以根據所使用的 API,代表集合中的文件、資料表中的資料列,或圖表中的節點或邊緣。 下表顯示 Azure Cosmos DB 中每個項目的限制。
| 資源 | 限制 |
|---|---|
| 項目大小上限 | 2 MB (JSON 表示法的 UTF-8 長度)¹ |
| 分割區索引鍵值的長度上限 | 2,048 位元組 (如果未啟用大型資料分割索引鍵,則為 101 個位元組) |
| 識別碼值的長度上限 | 1,023 個位元組 |
| 識別碼值的有效字元 | 允許服務端的所有 Unicode 字元,但 '/' 和 '\' 除外。 警告:但為了達到最佳互通性,強烈建議只使用識別碼值中的 ASCII 英數字元。 某些版本的 Cosmos DB SDK 和連接器 (Azure Data Factory、Spark、Kafka 等) 和 HTTP 驅動程式或程式庫有已知限制。 當識別碼值包含非英數字元 ASCII 字元時,這些限制可能會阻止成功處理。 因此,若要增加互通性,請為識別碼值編碼,例如透過 Base64 + Base64 中允許的特殊字元自訂編碼。 - 如果您必須支援服務/應用程式中的非英數字元 ASCII 字元。 |
| 每個項目的屬性數目上限 | 沒有實際限制 |
| 屬性名稱的長度上限 | 沒有實際限制 |
| 屬性值的長度上限 | 沒有實際限制 |
| 字串屬性值的長度上限 | 沒有實際限制 |
| 數值屬性值的長度上限 | IEEE754 雙精確度 64 位元 |
| 内嵌物件/陣列的最大巢狀層級 | 128 |
| 最大 TTL 值 | 2147483647 |
| JSON 中數字的最大精確度/範圍 (為確保安全互通性) | 美國電機電子工程師學會 (IEEE) 754 binary64 |
¹目前僅 Azure Cosmos DB for MongoDB 可支援最大 16 MB 的大型文件。 如需詳細資訊,請參閱 MongoDB 4.2 功能文件。
除了分割區索引鍵和識別碼值的長度限制,及 2 MB 的整體大小限制外,項目承載 (例如屬性數目和巢狀深度) 沒有任何限制。 您可能必須針對具有大型或複雜項目結構的容器設定編製索引原則,以減少 RU 耗用量。 如需真實世界範例以及用來管理大型項目的模式,請參閱 Azure Cosmos DB 中的模型化項目。
每個要求的限制
Azure Cosmos DB 支援針對容器、項目及資料庫等資源執行 CRUD 和查詢作業。 其也支援針對容器中具有相同分割區索引鍵的項目執行交易式批次要求。
| 資源 | 限制 |
|---|---|
| 單一作業的最長執行時間 (例如預存程式執行或單一查詢頁面擷取) | 5 秒 |
| 要求大小上限 (例如,預存程式、CRUD) | 2 MB |
| 回應大小上限 (例如,編頁查詢) | 4 MB |
| 交易式批次中的作業數目上限 | 100 |
Azure Cosmos DB 支援在寫入期間觸發。 此服務允許每個寫入作業一個預先觸發程序和一個後續觸發程序。
當查詢作業達到執行逾時或回應大小限制之後,會將結果的頁面和接續權杖傳回給用戶端,以繼續執行。 單一查詢的持續時間沒有實際限制,可以跨頁面/接續執行。
Azure Cosmos DB 會使用雜湊式訊息驗證碼 (HMAC) 進行授權。 使用主索引鍵進行資源的精細存取控制。 這些資源可以包含容器、分割區索引鍵或項目。 下表列出 Azure Cosmos DB 中的授權權杖限制。
| 資源 | 限制 |
|---|---|
| 最大主要權杖到期時間 | 15 分鐘 |
| 資源權杖到期時間下限 | 10 分鐘 |
| 資源權杖到期時間上限 | 預設為 24 小時¹ |
| 權杖授權的最大時鐘誤差 | 15 分鐘 |
¹ 藉由提交 Azure 支援票證來增加它。
自動調整佈建輸送量的限制
如需自動調整的輸送量和儲存體限制詳細說明,請參閱自動調整一文和常見問題集。
| 資源 | 限制 |
|---|---|
| 系統可調整到的 RU/秒上限 |
Tmax,由使用者設定的自動調整 RU/秒上限 |
| 系統可調整到的 RU/秒下限 | 0.1 * Tmax |
| 系統調整到的目前 RU/秒 |
0.1*Tmax <= T <= Tmax,依使用量而定 |
| 每小時的計費 RU/秒下限 | 0.1 * Tmax 計費是每小時計算,以系統在一小時內可調整的最高 RU/秒為基礎,或 0.1*Tmax,以較高者為準。 |
| 容器的自動調整最大 RU/秒下限 |
MAX(1000, highest max RU/s ever provisioned / 10, current storage in GB * 10) 四捨五入為最接近的 1000 RU/秒。 |
| 資料庫的自動調整最大 RU/秒下限 |
MAX(1000, highest max RU/s ever provisioned / 10, current storage in GB * 10, 1000 + (MAX(Container count - 25, 0) * 1000)) 四捨五入為最接近的 1000 RU/秒。 如果資料庫有 25 個以上的容器,系統會為每個額外的容器以 1000 RU/秒增加最小的自動調整最大 RU/秒。 例如,如果您有 30 個容器,則可設定的最低自動調整最大 RU/秒為 6000 RU/秒 (在 600 和 6000 RU/秒之間調整)。 |
SQL 查詢限制
Azure Cosmos DB 支援使用 SQL 來查詢項目。 下表描述查詢陳述式中的限制,例如子句數目或查詢長度。
| 資源 | 限制 |
|---|---|
| SQL 查詢的長度上限 | 512 KB |
每個查詢的 JOIN 陳述式上限 |
10¹ |
| 每個查詢的 UDF 數上限 | 10 ¹ |
| 每個多邊形的點數上限 | 4096 |
| 每個容器明確包含的路徑數上限 | 1500 ¹ |
| 每個容器明確排除的路徑數上限 | 1500 ¹ |
| 複合式索引中的屬性數上限 | 8 |
| 複合式索引中的路徑數目上限 | 100 |
¹ 您可以建立 Azure 支援要求,增加這些 SQL 查詢限制。
API for MongoDB 特定的限制
Azure Cosmos DB 針對使用 MongoDB 撰寫的應用程式支援 MongoDB 有線通訊協定。 在支援的 MongoDB 功能和語法中找到所支援命令和通訊協定版本。
下表列出 MongoDB 功能支援特定的限制。 針對 API for NoSQL 所提及的其他服務限制同樣適用於 API for MongoDB。
| 資源 | 限制 |
|---|---|
| 文件大小上限 | 16 MB (JSON 表示法的 UTF-8 長度)¹ |
| MongoDB 查詢記憶體大小上限 (僅適用於 3.2 伺服器版本) | 40 MB |
| MongoDB 作業的執行時間上限 (適用於 3.2 伺服器版本) | 15 秒 |
| MongoDB 作業的執行時間上限 (適用於 3.6 和 4.0 伺服器版本) | 60 秒 |
| 索引定義上内嵌物件/陣列的最大巢狀層級 | 6 |
| 伺服器端連線關閉的閒置連線逾時² | 30 分鐘 |
| Azure 入口網站中 MongoDB 殼層的使用時間限制 | 24 小時內的 120 分鐘 |
¹ 大小高達 16MB 的大型文件需要在 Azure 入口網站中啟用功能。 在功能文件中深入了解。
² 將驅動程式設定中的閒置連線逾時設為 2-3 分鐘,因為 Azure LoadBalancer 的預設逾時為 4 分鐘。 此逾時可確保用戶端電腦與 Azure Cosmos DB 間的中繼負載平衡器不會關閉閒置的連線。
Azure Cosmos DB 免費層帳戶限制
下表列出 Azure Cosmos DB 免費層帳戶的限制。
| 資源 | 限制 |
|---|---|
| 每個 Azure 訂用帳戶的免費層帳戶數目 | 1 |
| 免費層折扣期間 | 帳戶的存留期。 您必須在帳戶建立期間加入。 |
| 免費的 RU/秒上限 | 1000 RU/秒 |
| 免費的儲存體上限 | 25 GB |
| 共用輸送量資料庫中的容器數目上限 | 25 |
除了先前的資料表以外,每個帳戶的限制也適用於免費層帳戶。 若要深入了解,請參閱建立免費層帳戶。