次の方法で共有


Azure Cosmos DB サービスのクォータと既定の制限

この記事では、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/s 以上のスループットが必要です。 コンテナーのサイズが大きくなるにつれて、Azure Cosmos DB では、リソース (データベースまたはコンテナー) にその操作を行うための十分なリソースがあることを確認するために最小限のスループットが必要になります。

Azure portal またはソフトウェア開発キット (SDK) から、コンテナーまたはデータベースの現在および最小スループットを取得します。 詳細については、コンテナーとデータベースのスループットの割り当てに関する記事を参照してください。

実際の最小 RU/秒は、アカウントの構成によって異なる場合があります。 Azure Monitor メトリックを使用して、プロビジョニングされたスループット (RU/秒) とリソース上のストレージの履歴を表示できます。

コンテナーの最小スループット

このセクションを使用して、コンテナーの最小スループットを見積もります。

手動スループット

手動スループットでコンテナーに必要な最小 RU/秒を見積もるには、次の最大値を見つけます。

  • 400 RU/秒
  • 現在のストレージ (GB 単位) × 1 RU/秒
  • コンテナーで今までプロビジョニングされた最高 RU/秒 ÷ 100

たとえば、コンテナーは 400 RU/秒と 0 GB のストレージでプロビジョニングされます。 スループットを 50,000 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/秒を見積もるには、次の最大値を見つけます。

  • 1000 RU/秒
  • [Current storage in GB] (現在のストレージ (GB 単位)) * 10 RU/s
  • コンテナーで今までプロビジョニングされた最高 RU/秒 / 10

たとえば、1000 RU/秒で 0 GB のストレージでプロビジョニングされたコンテナーがあるとします。 スループットを 50,000 RU/秒に増やし、20 GB のデータをインポートします。 最小の最大 RU/秒は、MAX(1000, 20 * 10 RU/s per GB, 50,000 RU/s / 10) = 5,000 RU/秒になります。 時間の経過と同時に、ストレージは 2,000 GB に増加します。 最小の最大 RU/秒は、MAX(1000, 2000 * 10 RU/s per GB, 50,000 / 10) = 20,000 RU/秒になります。

共有スループット データベースでの最小スループット

このセクションを使用して、コンテナー間でスループットを共有するデータベースの最小スループットを見積もります。

手動スループット

手動スループットで共有スループット データベースに必要な最小 RU/秒を見積もるには、次の最大値を見つけます。

  • 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/秒になります。

自動スケーリングのスループット

自動スケーリング スループットで共有スループット データベースに必要な最小自動スケーリングの最大 RU/秒を見積もるには、次の最大値を見つけます。

  • 1000 RU/秒
  • [Current storage in GB] (現在のストレージ (GB 単位)) * 10 RU/s
  • データベースで今までプロビジョニングされた最高 RU/秒 / 10
  • 1000 + MAX(コンテナー数 - 25, 0) * 1,000 RU/秒

たとえば、1000 RU/秒、15 GB のストレージと 10 個のコンテナーでプロビジョニングされたデータベースがあるとします。 自動スケーリング データベースの最小の最大 RU/秒は、MAX(1000, 15 * 10 RU/s per GB, 1000 / 10, 1000 + 0 ) = 1,000 RU/秒になります。 データベースに 30 個のコンテナーがあった場合、最小の最大 RU/秒は 1000 + MAX(30 - 25, 0) * 1000 RU/s = 5,000 RU/秒になります。

まとめると、プロビジョニングされたスループットを使用する場合の最小プロビジョニング済み RU の制限は次のようになります。

プロビジョニングの種類 リソース 制限
手動スループット コンテナーあたりの最小 RU (手動スループットを使う専用スループット プロビジョニング モード) 400
手動スループット データベースあたりの最小 RU 数 (手動スループットを使う共有スループット プロビジョニング モード) 最初の 25 個のコンテナーに対して 400 RU/秒。
自動スケーリングのスループット コンテナーあたりの最小の最大 RU 数 (自動スケーリング スループットを使う専用スループット プロビジョニング モード) 1000
自動スケーリングのスループット データベースあたりの最小の最大 RU 数 (自動スケーリング スループットを使う共有スループット プロビジョニング モード) 最初の 25 個のコンテナーに対して 1,000 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 Cosmos DB リソースを作成および管理します。

  • Azure portal
  • Azure PowerShell
  • Azure CLI
  • Azure Resource Manager JSON/Bicep テンプレート
  • Azure REST API
  • Azure Management SDK
  • Terraform
  • プルミ

アカウント内でリソースを作成および管理するために、アプリケーションで使用される Azure Cosmos DB データ プレーン SDK からこの管理レイヤーにアクセスすることもできます。 また、データ プレーン SDK は、データベースとコンテナーの列挙、認証用のアカウント キーの要求などを行うために、サービスへの最初の接続中にコントロール プレーン要求を行います。

各 Azure Cosmos DB アカウントには、アカウントのすべてのメタデータを含む プライマリ パーティション があります。 また、コントロール プレーン操作をサポートするためのスループットも少量です。 このメタデータを作成、読み取り、更新、または削除するコントロール プレーン要求では、このスループットが使用されます。 コントロール プレーン操作によって消費されるスループットの量がこの量を超えると、Azure Cosmos DB 内のデータ プレーン操作と同じレート制限が適用されます。 ただし、データ操作のスループットとは異なり、プライマリ パーティションのスループットを増やすことはできません。

一部のコントロール プレーン操作では、Get キーや List キーなど、プライマリ パーティションのスループットが消費されません。 ただし、Azure Cosmos DB アカウント内のデータに対する要求とは異なり、Azure 内のリソース プロバイダーは大量の要求用に設計されていません。 記載されている制限を超えるコントロール プレーン操作が、連続する 5 分間にわたって継続的なレベルで行われる場合、Azure Cosmos DB リソースで要求が調整されたり、失敗または不完全な操作になったりする可能性があります

コントロール プレーン操作は、Azure Cosmos DB アカウントの [分析情報] タブに移動することで監視できます。 詳細については、「 コントロール プレーン要求の監視」を参照してください。 これらの分析情報のカスタマイズ、Azure Monitor の使用、 メタデータ要求 の監視とアラートの設定を行うブックを作成できます。

リソース制限

次の表に、サブスクリプションまたはアカウントごとのリソース制限の一覧を示します。

リソース 制限
サブスクリプションあたりのアカウントの最大数 既定では 250 ¹
アカウントあたりのデータベースおよびコンテナーの最大数 500 ²
アカウントでサポートされているメタデータ操作の最大スループット 240 RU/秒

¹ Microsoft 内部のお客様には、別の制限が適用されます。 Azure サポート要求を最大 1,000 まで作成することで、これらの制限を増やします。 Cosmos DB は、空のデータベース アカウント (つまり、データベース/コレクションなし) を削除する権利を留保します。 ² この制限を引き上げることはできません。 合計カウントには、アカウント内のデータベースとコンテナーの両方が含まれます (たとえば、1 つのデータベースと 499 個のコンテナー、250 個のデータベースと 250 個のコンテナーなど)。

要求の制限

次の表に、特に指定がない限り、アカウントごとに 5 分間隔あたりの要求制限を示します。

操作 制限
キーの一覧表示または取得の最大数 500 ¹
作成するデータベースおよびコンテナーの最大数 500
取得または一覧表示するデータベースおよびコンテナーの最大数 500 ¹
プロビジョニングされたスループットの更新の最大数 25
リージョン内フェールオーバーの最大数 10 (1 時間あたり) ²
以前に定義されていないすべての操作 (PUTPOSTPATCHDELETEGET) の最大数 500

¹ SDK インスタンスに シングルトン クライアント を使用し、そのインスタンスの有効期間中、要求間のキー、データベース、コンテナー参照をキャッシュします。 ² リージョン内フェールオーバーは、単一リージョン書き込みのアカウントにのみ適用されます。 複数リージョン書き込みのアカウントには、書き込みリージョンの変更は必要ないか、または許可されません。

Azure Cosmos DB では、データが定期的に自動的にバックアップされます。 バックアップ保有期間の間隔とウィンドウの詳細については、「Azure Cosmos DB でのオンライン バックアップとオンデマンドのデータ復元」を参照してください。

アカウントあたりの制限

アカウントあたりの制限を次に示します。

プロビジョニング スループット

リソース 制限
アカウントあたりのデータベースとコンテナーの最大数 500
データベースあたりのコンテナーの最大数 (共有スループット) 25
リージョンの最大数 制限なし (すべての Azure リージョン)

サーバーレス

リソース 制限
アカウントあたりのデータベースとコンテナーの最大数 500
リージョンの最大数 1 (任意の Azure リージョン)

コンテナーあたりの制限

使用する API に応じて、Azure Cosmos DB コンテナーはコレクション、テーブル、またはグラフを表すことができます。 コンテナーでは、 一意のキー制約ストアド プロシージャ、トリガー、ユーザー定義関数 (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 バイト)
ID 値の最大長 1,023 バイト
ID 値に使用できる文字 サービス側では、'/' と '\' を除くすべての Unicode 文字を使用できます。 警告: ただし、相互運用性を最大限に高めるために、ID 値には英数字の ASCII 文字のみを使用することを強くお勧めします。 Cosmos DB SDK の一部のバージョンとコネクタ (Azure Data Factory、Spark、Kafka など) と HTTP ドライバーまたはライブラリには、既知の制限があります。 これらの制限により、ID 値に非英数字 ASCII 文字が含まれている場合、処理が正常に行えなくなる可能性があります。 そのため、相互運用性を高めるために、ID 値をエンコードします 。 たとえば、Base64 + Base64 で許可される特殊文字のカスタム エンコードを使用します。 - サービス/アプリケーションで非英数字 ASCII 文字をサポートする必要がある場合。
項目あたりのプロパティの最大数 実質的に無制限
プロパティ名の最大長 実質的に無制限
プロパティ値の最大長 実質的に無制限
文字列のプロパティ値の最大長 実質的に無制限
数値のプロパティ値の最大長 IEEE754 倍精度 64 ビット
埋め込みオブジェクト/配列の入れ子の最大レベル 128
最大 TTL 値 2147483647
JSON における数値の最大精度/範囲(安全な相互運用性を確保するため) 電気電子工学研究所 (IEEE) 754 binary64

¹ 16 MB までの大きなドキュメント サイズは、Azure Cosmos DB for MongoDB でのみサポートされます。 詳細については、 MongoDB 4.2 の機能に関するドキュメントを参照してください

パーティション キー値と ID 値に関する長さの制限および 2 MB の全体的なサイズ制限を除き、項目ペイロードに制限はありません (プロパティの数や入れ子の深さなど)。 RU の消費を減らすために、大規模または複雑な項目構造を持つコンテナーのインデックス作成ポリシーを構成する必要がある場合があります。 実際の例や大きな項目を管理するためのパターンについては、Azure Cosmos DB での項目のモデル化 に関するページを参照してください。

要求あたりの制限

Azure Cosmos DB では、コンテナー、項目、データベースなどのリソースに対する CRUD 操作とクエリ操作 がサポートされています。 また、コンテナー内の同じパーティション キーを持つ項目に対する トランザクション バッチ要求 もサポートします。

リソース 制限
1 つの操作 (ストアド プロシージャの実行や 1 回のクエリ ページ取得など) の最大実行時間 5 秒
最大要求サイズ (ストアド プロシージャ、CRUD など) 2 MB
最大応答サイズ (ページ分割されたクエリなど) 4 MB
トランザクション バッチ内の操作の最大数 100

Azure Cosmos DB では、書き込み中のトリガーがサポートされます。 このサービスでは、書き込み操作ごとに 1 つのプリトリガーと 1 つのポストトリガーが許可されます。

クエリ操作は、実行タイムアウトまたは応答サイズの制限に達すると、実行を再開するために結果のページと継続トークンをクライアントに返します。 1 つのクエリをページや継続にまたがって実行できる期間に実質的に制限はありません。

Azure Cosmos DB では、承認にハッシュ ベースのメッセージ認証コード (HMAC) が使用されます。 リソースへのアクセス制御をきめ細かく行うには、主キーを使用します。 これらのリソースには、コンテナー、パーティション キー、または項目が含まれます。 次の表は、Azure Cosmos DB での承認トークン制限の一覧を示しています。

リソース 制限
プライマリ トークンの最大有効期限 15 分
リソース トークンの最小有効期限 10 分
リソース トークンの最大有効期限 既定では 24 時間 ¹
トークン承認の最大クロック スキュー 15 分

¹ Azure サポート チケットを提出して増やします。

自動スケーリングでプロビジョニングされたスループットの制限

自動スケールのスループットとストレージの制限の詳細については、 自動スケーリング に関する記事と FAQ を参照してください。

リソース 制限
システムをスケーリングできる最大 RU/秒 Tmax、 ユーザーによって設定された自動スケールの最大 RU/秒
システムをスケーリングできる最小 RU/秒 0.1 * Tmax
システムがスケーリングされる現在の RU/秒 0.1*Tmax <= T <= Tmax: 使用量に基づきます
請求可能な時間あたり最小 RU/秒 0.1 * Tmax

課金は、システムが 1 時間中にスケーリングした最大 RU/秒、または 0.1*Tmax のいずれか高い方に基づいて、1 時間あたりに行われます。
コンテナーの自動スケーリング最大 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 を超えるコンテナーがある場合、システムは、追加のコンテナーごとに最小自動スケールの最大 RU/秒を 1,000 RU/秒増やします。 たとえば、コンテナーが 30 個の場合、設定できる自動スケールの最大 RU/秒は 6,000 RU/秒です (600 から 6000 RU/秒の間のスケーリング)。

SQL クエリの制限

Azure Cosmos DB は、SQL を使用した項目のクエリをサポートします。 次の表では、句の数やクエリの長さなど、クエリ ステートメントの制限について説明します。

リソース 制限
SQL クエリの最大長 512 KB
クエリあたりの最大 JOIN ステートメント数 10¹
クエリあたりの最大 UDF 10 ¹
多角形あたりの最大ポイント 4096
コンテナーあたり明確に含まれる最大パス 1500 ¹
コンテナーあたり明確に除外される最大パス 1500 ¹
複合インデックスの最大プロパティ 8
複合インデックス内のパスの最大数 100

¹ Azure サポート 要求を作成することで、これらの SQL クエリの制限を引き上げることができます。

MongoDB 用 API 固有の制限

Azure Cosmos DB では、MongoDB で記述されたアプリケーション用の MongoDB ワイヤ プロトコルがサポートされています。 サポートされているコマンドとプロトコルのバージョンは、 サポートされている MongoDB の機能と構文を参照してください。

次の表は、MongoDB 機能のサポートに固有の制限の一覧を示しています。 NoSQL 用 API に関して説明されているその他のサービス制限は、MongoDB 用 API にも適用されます。

リソース 制限
ドキュメントの最大サイズ 16 MB (JSON 表現の UTF-8 の長さ) ¹
MongoDB クエリの最大メモリ サイズ (3.2 サーバー バージョンにのみ適用されます) 40 MB
MongoDB 操作の最大実行時間 (3.2 サーバー バージョンに適用) 15 秒
MongoDB 操作の最大実行時間 (3.6 および 4.0 サーバー バージョンに適用) 60 秒
インデックス定義の埋め込みオブジェクトまたは配列の入れ子の最大レベル 6
サーバー側の接続を終了するためのアイドル状態の接続のタイムアウト ² 30 分
Azure portal での MongoDB シェルに関する時間制限 24 時間で 120 分

¹ 最大 16 MB の大きなドキュメント サイズでは、Azure portal で機能を有効にする必要があります。 詳細については、 機能ドキュメントを参照してください

² Azure LoadBalancer の既定のタイムアウトは 4 分であるため、ドライバー設定のアイドル接続タイムアウトを 2 ~ 3 分に設定します。 このタイムアウトにより、中間ロード バランサーがアイドル状態でも、クライアント マシンと Azure Cosmos DB 間の接続が閉じられなくなります。

Azure Cosmos DB Free レベル アカウントの制限

次の表に、 Azure Cosmos DB Free レベル アカウントの制限を示します。

リソース 制限
Azure サブスクリプションあたりの Free レベルのアカウント数 1
Free レベル割引の期間 アカウントの有効期間。 アカウントの作成時にオプトインする必要があります。
Free の最大 RU/秒 1000 RU/秒
Free の最大ストレージ 25 GB
共有スループット データベース内のコンテナーの最大数 25

前の表に加えて、 アカウントごとの制限 は、Free レベルのアカウントにも適用されます。 詳細については、 Free レベルのアカウントを作成する方法を参照してください。