Azure Cosmos DB 服務配額

適用於:NoSQL MongoDB Cassandra Gremlin Table

本文概述提供給 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/秒。 經過一段時間後,儲存體會增加至 2000 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/秒。 經過一段時間後,儲存體會增加至 2000 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) * 1000 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/秒之間進行同步和立即調整達最小 RU/秒的 100 倍。 如果要求的輸送量值超出範圍,則會以非同步方式執行調整。 視容器中所要求的輸送量和資料儲存體大小而定,非同步調整可能需要數分鐘到數小時的時間才能完成。 深入了解

無伺服器

無伺服器可讓您以耗用量為基礎的方式來使用 Azure Cosmos DB 資源。 下表列出每個容器/資料庫的儲存體和輸送量高載限制。 這些限制無法增加。 建議您針對更多儲存體需求,配置額外的無伺服器帳戶。

資源 限制
每個容器的最大 RU/秒 20,000*
每個 (邏輯) 分割區在所有項目上的儲存體上限 20 GB
每個容器的最大儲存空間 1 TB

*最大 RU/秒可用性取決於儲存在容器中的資料。 請參閱無伺服器效能

控制平面

Azure Cosmos DB 會維護一個資源提供者,以提供管理層,以在 Azure Cosmos DB 帳戶中建立、更新和刪除資源。 資源提供者會與整體 Azure 資源管理層介面,這是 Azure 的部署和管理服務。 您可以使用 Azure 入口網站、Azure PowerShell、Azure CLI、Azure Resource Manager 和 Bicep 範本、Rest API、Azure 管理 SDK,以及第三方工具,例如 Terraform 和 Pulumi,來 建立和管理 Azure Cosmos DB 資源。

您也可以從應用程式中使用的 Azure Cosmos DB 資料平面 SDK 存取此管理層,以在帳戶內建立和管理資源。 資料平面 SDK 也會在與服務的初始連線期間提出控制平面要求,以執行列舉資料庫和容器等動作,以及要求帳戶金鑰進行驗證。

Azure Cosmos DB 的每個帳戶都有一個 master partition ,其中包含帳戶的所有中繼資料。 它也有少量的輸送量來支援控制平面作業。 建立、讀取、更新或刪除此中繼資料的控制平面要求會耗用此輸送量。 當控制平面作業所耗用的輸送量超過此數量時,作業會受到速率限制,與 Azure Cosmos DB 中的資料平面作業相同。 不過,不同於資料作業的輸送量,主要分割區的輸送量無法增加。

某些控制平面作業不會耗用主要分割區輸送量,例如取得或列出金鑰。 不過,與 Azure Cosmos DB 帳戶內資料的要求不同,Azure 中的資源提供者並非針對高要求量而設計。 超過連續 5 分鐘期間內持續層級上記錄限制的控制面板作業,可能會遇到在 Azure Cosmos DB 資源上進行節流處理的要求,以及失敗或不完整的作業。

您可以瀏覽 Azure Cosmos DB 帳戶的深入解析索引標籤來監視控制平面作業。 若要深入了解,請參閱監視控制平面要求。 使用者也可以自訂這些屬性、使用 Azure 監視器和建立活頁簿來監視中繼資料要求並設定警示。

資源限制

下表資料表列出每個訂用帳戶或帳戶的資源限制。

資源 限制
每個訂閱的帳戶數目上限 預設為250
每個帳戶的資料庫和容器數目上限 500 ²
中繼資料作業的帳戶所支援的最大輸送量 240 RU/秒

2 Microsoft 內部客戶的預設限制不同。 您可以建立最多 1,000 個最大值的 Azure 支援要求 來增加這些限制。 Cosmos DB 保留刪除任何空白資料庫帳戶的權利,亦即沒有資料庫/集合。 2 無法增加此限制。 總數計算帳戶內兩者相加。 (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 值 2147483647

¹ 您可建立 Azure 支援要求,增加每個容器的任一項限制。

每個項目的限制

Azure Cosmos DB 項目可以根據所使用的 API,代表集合中的文件、資料表中的資料列,或圖表中的節點或邊緣。 下表顯示 Azure Cosmos DB 中每個項目的限制。

資源 限制
項目大小上限 2 MB (JSON 表示法的 UTF-8 長度)¹
分割區索引鍵值的長度上限 2048 位元組 (如果未啟用大型資料分割索引鍵,則為 101 個位元組)
識別碼值的長度上限 1023 個位元組
識別碼值的有效字元 允許服務端的所有 Unicode 字元,但 '/' 和 '\' 除外。
警告:但為了達到最佳互通性,強烈建議只使用識別碼值中的 ASCII 英數字元
某些版本的 Cosmos DB SDK 以及連接器 (ADF、Spark、Kafka 等) 和 HTTP-驅動程式/程式庫等有幾項已知限制,當識別碼值包含 ASCII 非英數字元時,這些限制可能造成無法成功處理。 因此,若要增加互通性,請為識別碼值編碼,例如透過 Base64 + Base64 中允許的特殊字元自訂編碼。 - 如果您必須支援服務/應用程式中的 ASCII 非英數字元。
每個項目的屬性數目上限 沒有實際限制
屬性名稱的長度上限 沒有實際限制
屬性值的長度上限 沒有實際限制
字串屬性值的長度上限 沒有實際限制
數值屬性值的長度上限 IEEE754 雙精確度 64 位元
内嵌物件/陣列的最大巢狀層級 128
最大 TTL 值 2147483647
JSON 中數字的最大精確度/範圍 (為確保安全互通性) IEEE 754 binary64

¹目前僅 Azure Cosmos DB for MongoDB 可支援最大 16 MB 的大型文件。 如需深入了解,請閱讀功能文件

除了分割區索引鍵和識別碼值的長度限制,及 2 MB 的整體大小限制外,項目承載 (例如屬性數目和巢狀深度) 沒有任何限制。 您可能必須針對具有大型或複雜項目結構的容器設定編製索引原則,以減少 RU 耗用量。 如需真實世界範例以及用來管理大型項目的模式,請參閱 Azure Cosmos DB 中的模型化項目

每個要求的限制

Azure Cosmos DB 支援針對容器、項目及資料庫等資源執行 CRUD 和查詢作業。 其也支援針對容器中具有相同分割區索引鍵的項目執行交易式批次要求

資源 限制
單一作業的最長執行時間 (例如預存程式執行或單一查詢頁面擷取) 5 sec
要求大小上限 (例如,預存程式、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 分鐘

¹ 大型文件小高達 16 MB,需要在 Azure 入口網站中啟用功能。 如需深入了解,請閱讀功能文件

² 我們建議用戶端應用程式將驅動程式設定中的閒置連線逾時設為 2-3 分鐘,因為 Azure LoadBalancer 的預設逾時為 4 分鐘。 此逾時可確保用戶端電腦與 Azure Cosmos DB 間的中繼負載平衡器不會關閉閒置的連線。

免費試用 Azure Cosmos DB 的限制

下表列出免費試用 Azure Cosmos DB 試用版的限制。

資源 限制
試用期間 30天 (到期後可要求新的試用版)
到期後,即會刪除儲存的資訊。
每個訂閱的容器數上限 (NoSQL、Gremlin、API for Table) 1
每個訂閱的容器數上限 (API for MongoDB) 3
每個容器的最大輸送量 5000
每個共用輸送量資料庫的最大輸送量 20000
每個帳戶的總儲存體上限 10 GB

試用 Azure Cosmos DB 僅支援「美國中部」、「北歐」和「東南亞」區域中的「全域散發」。 無法為試用 Azure Cosmos DB 的帳戶建立 Azure 支援票證。 不過,支援可提供給具有現有支援方案的訂閱者。

Azure Cosmos DB 免費層帳戶限制

下表列出 Azure Cosmos DB 免費試用帳戶的限制。

資源 限制
每個 Azure 訂用帳戶的免費層帳戶數目 1
免費層折扣期間 帳戶的存留期。 請在帳戶建立期間加入。
免費的 RU/秒上限 1000 RU/秒
免費的儲存體上限 25 GB
共用輸送量資料庫的數目上限 5
共用輸送量資料庫中的容器數目上限 25
在免費層帳戶中,具有最多 25 個容器的共用輸送量資料庫其 RU/秒下限為 400 個 RU/秒。

除了先前的資料表以外,每個帳戶的限制也適用於免費層帳戶。 若要深入了解,請參閱建立免費層帳戶

下一步