Azure Cosmos DBのプロビジョニング済みスループット解説|変更点と移行・運用の注意点

Azure Cosmos DBの「Provision Throughput for Containers and Databases」でまず押さえるべき結論は、新規または成長中の多くのワークロードでは、データベース単位ではなくコンテナー単位でスループットを設定するのが基本という点です。データベース単位の共有スループットはコストや初期構成を簡略化できる一方、特定コンテナーの性能保証が弱く、マルチテナント環境では「一部の利用者が他の利用者に影響する」リスクがあります。

今回の公式情報で実務上重要なのは、単なる設定手順ではなく、共有データベーススループットの使いどころがより限定的に整理されたことです。特に、Deployment Stampsを使うマルチテナント構成では、低トラフィックのstampでは共有スループットを初期選択肢にできる一方、高トラフィックやテナント間の性能分離が必要な場面では、専用コンテナースループットを使うべきと明確に読む必要があります。Microsoft Learn上のページ表示では最終更新日が2026年4月29日、GitHub履歴では2026年5月13日にDeployment Stamps関連の加筆と整形が確認できます。(Microsoft Learn)

目次

Azure Cosmos DBのプロビジョニング済みスループットとは

Azure Cosmos DBのプロビジョニング済みスループットは、データベース操作に使える処理能力をRU/s、つまりRequest Units per secondで事前に割り当てる仕組みです。読み取り、書き込み、クエリなどの操作はRUを消費し、アイテムサイズ、インデックス設定、整合性レベル、クエリの複雑さによって消費量が変わります。たとえば、同じデータに対する同じクエリは同じRUを消費するため、RUは性能設計とコスト見積もりの共通単位として使えます。(Microsoft Learn)

Azure Cosmos DBでは、プロビジョニング済みスループットを主に次の2つの粒度で設定できます。

設定単位特徴向いている用途
コンテナー単位各コンテナーに専用のRU/sを割り当てる本番環境、性能予測が必要なAPI、重要な業務データ、テナント分離が必要な構成
データベース単位データベース内の複数コンテナーでRU/sを共有する低トラフィックの複数コンテナー、移行初期、性能分離が不要な検証環境や一部のマルチテナント構成

この違いは、料金だけで判断すると失敗しやすいポイントです。コンテナー単位は最低RU/sが複数コンテナー分必要になるため高く見えることがありますが、負荷の高いコンテナーが他のコンテナーを巻き込まないため、運用時の安定性を確保しやすくなります。

変更点の要点は「共有スループットを安易に選ばない」こと

公式ドキュメントでは、共有データベーススループットは「ほとんどのワークロードでは推奨されない」と説明されています。理由は、複数コンテナーが同じスループットとパーティションを共有するため、あるコンテナーの負荷増加が他のコンテナーの応答時間や429エラーに影響する可能性があるためです。(Microsoft Learn)

特に注意したいのは、共有データベーススループットが「複数コンテナーをまとめれば安くなる便利な設定」ではなく、性能保証を個別コンテナーに求めない高度な設計上の選択肢として扱われている点です。

観点従来よくある判断2026年5月中旬時点での実務的な判断
コスト複数コンテナーなら共有した方が安い低トラフィックで性能分離が不要な場合のみ検討する
本番API共有スループットでも全体RU/sが足りればよい重要コンテナーは専用スループットを優先する
マルチテナントテナントごとにコンテナーを作って共有するnoisy neighborを許容できるか確認する
移行既存DBの構造をそのまま移せる移行後にコンテナー単位へ切り替える計画を持つ
Deployment Stampsstampごとに同じ設計を使う低トラフィックstampは共有、高トラフィックstampは専用を検討する

共有データベーススループットは、オンプレミスやVM上のNoSQLデータベースからAzure Cosmos DBへ移行する初期段階では便利な場合があります。ただし、ワークロードが安定した後は、重要なコンテナーを専用スループットへ移すかどうかを再評価するべきです。(Microsoft Learn)

コンテナー単位のスループットが推奨される理由

コンテナー単位でスループットを設定すると、そのRU/sは対象コンテナー専用として予約されます。つまり、別コンテナーの負荷増加によって性能が奪われにくく、予測可能なスケーリングをしやすくなります。Microsoftの手順ページでも、コンテナー単位の設定は多くのワークロードで推奨されるアプローチと説明されています。(Microsoft Learn)

たとえば、ECサイトで次のようなコンテナーがあるとします。

コンテナー主な用途推奨される考え方
orders注文処理専用スループットを設定し、ピーク時の遅延を防ぐ
products商品参照読み取りが多ければ専用またはautoscaleを検討する
auditLogs監査ログ書き込み量が安定していればmanual、変動が大きければautoscaleを検討する
settings設定値低負荷なら共有候補。ただし重要処理と同居させない

このように、業務上の重要度と負荷パターンが異なるコンテナーを同じ共有スループットに入れると、障害時の切り分けが難しくなります。特に注文、決済、認証、在庫更新のような遅延に弱い処理では、専用コンテナースループットを基本にするのが安全です。

データベース単位の共有スループットを使ってよいケース

共有データベーススループットが不要になったわけではありません。次のような条件を満たす場合は、選択肢として検討できます。

利用シーン使える理由注意点
低トラフィックの複数コンテナーそれぞれに専用RU/sを割り当てるより初期コストを抑えやすい一部コンテナーの急増が他に影響する
移行初期既存のMongoDBやCassandraなどの構成を大きく変えずに始めやすい本番安定後に再設計が必要
低負荷のDeployment Stampstamp単位で小さく始めやすい高負荷stampでは専用コンテナーへ切り替える
検証環境・開発環境予測可能な性能よりコストや簡便性を優先できる本番と同じ前提で性能評価しない

重要なのは、共有スループットを「永続的な本番標準」として採用しないことです。低負荷のうちは問題が見えにくくても、特定コンテナーのデータ量やアクセス数が増えると、HTTP 429エラーや応答時間のばらつきとして表面化します。

共有データベーススループットの制限と影響範囲

共有スループットのデータベースでは、標準、つまりmanual throughputの場合、最小400 RU/sで最大25個のコンテナーを共有できます。autoscaleの場合も共有スループットデータベース内で共有できるコンテナー数は25個までです。25個を超えて追加するコンテナーは、共有スループットとは別に専用スループットを設定する必要があります。既存の共有スループットデータベースで25個以上のコンテナーがあるアカウントについては、例外扱いが説明されています。(Microsoft Learn)

管理者は、まず次の環境を棚卸ししてください。

確認項目見るべきポイント放置した場合のリスク
共有スループットDBの有無データベース単位でRU/sが設定されているか重要コンテナーが共有リソースに依存する
コンテナー数25個に近い、または超えていないか将来の追加時に専用スループットが必要になる
429エラー特定コンテナーやパーティションで集中していないか利用者から見ると遅延や失敗に見える
Normalized RU Consumption100%近辺が継続していないかRU不足またはhot partitionを見逃す
パーティションキー値が偏っていないかRUを増やしてもスロットリングが解消しない
IaC定義Bicep、Terraform、ARM、CLIで設定が明示されているか手動変更による構成ドリフトが起きる

特に、Azure Portalの手順では、以前含まれていた「Share throughput across containers」オプションに関する説明が変更され、共有スループットが必要な高度なシナリオではSDKによる作成が案内されています。運用手順書や社内Wikiに古いポータル画面を前提にした記述がある場合は、更新が必要です。(Microsoft Learn)

manual throughputとautoscale throughputの選び方

Azure Cosmos DBのプロビジョニング済みスループットには、standard、つまりmanualと、autoscaleの2種類があります。manualは固定RU/sを割り当てる方式、autoscaleは最大RU/sであるTmaxを指定し、実際のスループットが0.1 * TmaxからTmaxの範囲で自動的に変動する方式です。(Microsoft Learn)

判断基準は次のように整理できます。

ワークロード推奨候補判断基準
常に高い負荷が続くmanual月内の多くの時間でRU/s使用率が高い
日中だけ負荷が高いautoscale夜間や休日に使用率が下がる
ピークが読めないautoscaleセール、IoT、業務バッチなどで急増する
新規アプリautoscaleまたは低めのmanual最初は実測値がないため、過剰割り当てを避ける
マルチリージョンかつ負荷が地域で偏るdynamic autoscaleリージョンやパーティションごとに使用量が違う

Microsoftの判断基準では、平均利用率が約66%を下回るならautoscaleがコスト面で有利になりやすく、66%を上回るならmanualが有利になりやすいとされています。ただし、これは利用パターンを見たうえでの目安です。実際にはAzure Monitorで7日から30日以上の履歴を確認し、最高利用率を時間単位で集計して判断すると失敗しにくくなります。(Microsoft Learn)

dynamic autoscaleで確認すべきポイント

autoscaleを使う場合は、dynamic autoscaleも確認しておきたい機能です。dynamic autoscaleは、リージョンや物理パーティションごとに独立してスケールするため、負荷が均一でないマルチリージョン構成やhot partitionが起きやすい構成で、不要なスケールアップを抑えやすくなります。2024年9月25日以降に作成されたAzure Cosmos DBアカウントでは既定で有効になっており、それ以前のアカウントではAzure Portal、CLI、PowerShell、REST APIなどで有効化できます。(Microsoft Learn)

確認すべきメトリックは次の3つです。

メトリック目的
Provisioned Throughputautoscaleでその時間に課金対象となるRU/sを確認する
Normalized RU Consumptionスケールアップ、スケールダウン、RU不足の判断に使う
Autoscaled RUdynamic autoscaleで各パーティションやリージョンがどうスケールしたか確認する

プログラムで独自にスケーリング判断を行う場合も、SDKで読み取ったProvisionedThroughputをそのまま使うのではなく、Azure MonitorのNormalized RU Consumptionを基準にするのが安全です。公式FAQでも、ProvisionedThroughputは遅延を含む課金寄りの値であり、スケーリング判断には不正確になる可能性があると説明されています。(Microsoft Learn)

パーティションキーを見直さないとRU/sを増やしても解決しない

Azure Cosmos DBのスループット設計でよくある失敗は、429エラーを見てすぐRU/sだけを増やすことです。コンテナーに割り当てたスループットは物理パーティションに分散されますが、特定の論理パーティションキーにリクエストが集中すると、いわゆるhot partitionが発生します。この場合、全体のRU/sに余裕があっても、特定パーティションだけが上限に達して429エラーが発生することがあります。(Microsoft Learn)

たとえば、マルチテナントSaaSでパーティションキーにtenantIdを使う場合、大口テナントだけアクセスが突出すると、そのテナントの論理パーティションがhot partitionになりやすくなります。対策としては、次のような設計を検討します。

問題対策例
一部テナントだけ極端にアクセスが多い大口テナントを専用コンテナーや専用stampへ移す
時系列データで最新日時に書き込みが集中するtenantId + 日付範囲など分散しやすいキーを検討する
1つの論理パーティションが大きくなりすぎる階層型パーティションキーやデータモデル見直しを検討する
クエリが広範囲に散らばるクエリパターンから逆算してパーティションキーを決める

RU/sを増やす前に、Azure Monitorの「Normalized RU Consumption by PartitionKeyRangeID」や429エラーの発生箇所を確認し、問題が全体容量不足なのか、パーティション偏りなのかを切り分けることが重要です。

スケールアップ時は即時反映とは限らない

Azure Cosmos DBのスループット増加は、多くの場合すぐに反映されます。ただし、要求したRU/sが現在の物理パーティション構成で支えられない場合は、物理パーティションの分割が必要になり、非同期のスケールアップになることがあります。この処理は典型的に4〜6時間かかる場合があり、処理中にさらにスループット変更を行うとHTTP 423が返ることがあります。(Microsoft Learn)

大規模なデータ投入、移行、キャンペーン開始、バッチ処理の前には、直前にRU/sを上げるのではなく、事前にスケールアップして完了状態を確認しておくべきです。

作業推奨タイミング理由
大量データ移行移行開始前スケールアップ完了前に投入すると429が増える
セール開始ピーク前当日の急な変更では間に合わない可能性がある
新リージョン追加スケール操作と重ねないスケールアップが一時停止する可能性がある
RU/s削減ピーク終了後レイテンシと429の落ち着きを確認してから下げる

現在の物理パーティション数を確認し、現在の物理パーティション数 * 10,000 RU/sの範囲内であれば即時スケールしやすい、という考え方も実務では役立ちます。これを超える場合は、パーティション分割を前提に作業計画を立ててください。(Microsoft Learn)

共有と専用は後から直接変換できない

見落としやすい制約として、専用スループットを持つコンテナーを共有データベーススループットのコンテナーへ直接変換することはできません。逆に、共有データベーススループット上のコンテナーを専用スループットへ直接変換することもできません。目的のスループット設定を持つ新しいコンテナーへデータを移動する必要があり、NoSQL、MongoDB、Cassandra APIではContainer copy jobsが移行支援として案内されています。(Microsoft Learn)

一方で、manual throughputとautoscale throughputの切り替えは可能です。ただし、すべてをクライアントSDKだけで完結できるわけではありません。autoscale FAQでは、既存リソースのmanualとautoscaleの切り替えはAzure Portal、Azure CLI、PowerShell、Azure Management SDKなどで行い、Azure Cosmos DBクライアントSDKやARMテンプレートでは移行に使えないと説明されています。(Microsoft Learn)

移行計画では、次の順序で整理すると安全です。

手順実施内容
現状確認データベース単位かコンテナー単位か、manualかautoscaleかを確認する
重要度分類注文、決済、認証など遅延に弱いコンテナーを洗い出す
メトリック確認429、Normalized RU Consumption、ストレージ量、RU消費を確認する
移行先設計共有のまま残すコンテナーと専用化するコンテナーを分ける
データ移動新コンテナー作成、データコピー、検証、切り替えを計画する
切り戻し準備旧コンテナー保持期間、読み書き停止手順、整合性確認を定義する

Deployment Stamps構成での考え方

Deployment Stampsは、複数のテナントやワークロードを独立したstamp、つまりスケール単位に分けて展開するアーキテクチャパターンです。Azure Architecture Centerでは、stampごとに独立して管理・監視し、テナント数の増加に合わせて複数stampへスケールアウトする考え方が説明されています。(Microsoft Learn)

Azure Cosmos DBのスループット設計では、Deployment Stampsを使う場合に次のように判断すると実務的です。

stampの状態推奨構成
新規stampでテナント数が少ない共有データベーススループットを初期選択肢にできる
テナントごとの負荷差が小さい共有スループットでも運用しやすい
特定テナントが急成長している専用コンテナーまたは専用stampへ分離する
SLAや性能分離が必要コンテナー単位の専用スループットを使う
高トラフィックstampsharedではなくdedicatedを基本にする

このとき、stampごとに設定がばらつくと、障害時の切り分けやコスト比較が難しくなります。BicepやTerraformなどのInfrastructure as Codeで、Cosmos DBアカウント、データベース、コンテナー、スループット、メトリック、アラートを定義し、stamp間の設定差分を管理することが重要です。Deployment Stampsの公式ガイドでも、複数stampの展開では自動化と構成ドリフトの抑制が重要とされています。(Microsoft Learn)

管理者が今すぐ確認すべきチェックリスト

Azure Cosmos DBを運用している管理者は、今回の公式情報を受けて、少なくとも次の確認を行ってください。

チェック確認方法判断
共有スループットDBがあるかAzure Portal、CLI、IaC定義を確認本番重要系なら専用化を検討
共有DB内のコンテナー数データベース配下のコンテナー数を確認25個に近ければ今後の追加方針を決める
429エラーの発生率Azure Monitorで確認継続的ならRU不足またはhot partitionを疑う
RU使用率の履歴Normalized RU Consumptionを1時間粒度で確認autoscale/manualの見直し材料にする
ストレージ増加コンテナー別のデータ量を確認autoscale最大RU/sの下限上昇に注意
パーティション偏りPartitionKeyRangeID別の使用率を見る偏りが大きければデータモデルを見直す
手順書の古さPortal画面や「Share throughput」の記述を確認古い手順は更新する

特に、共有スループットを使っている本番環境では、「いま問題がない」だけでは不十分です。今後のコンテナー追加、テナント増加、リージョン追加、データ移行、大量バッチの予定を含めて、どの時点で専用スループットへ移すかを決めておく必要があります。

開発者が実装で注意すべきポイント

開発者側では、RU/sの設定だけでなく、アプリケーションのリクエスト設計も見直す必要があります。

項目実装上の注意点
429エラーSDKのリトライに頼りきらず、継続発生時は設計を見直す
クエリクロスパーティションクエリや大量スキャンを避ける
インデックス不要なプロパティまで自動インデックス対象にしない
整合性レベル強い整合性が必要な箇所と不要な箇所を分ける
バッチ処理本番APIのピーク時間と重ねない
データ投入事前にスループットを上げ、完了後に下げる
テナント分離大口テナントを同じ共有リソースに置き続けない

429エラーは、短時間であれば必ずしも障害ではありません。公式FAQでも、SDKやデータインポートツールは429に対して自動リトライを行うため、少量の429はRU/sを有効活用しているサインになり得ると説明されています。ただし、継続的な429やレイテンシ悪化がある場合は、RU/s増加、autoscale最大値の見直し、パーティションキー変更、専用コンテナー化のいずれかを検討してください。(Microsoft Learn)

どの構成を選ぶべきか

最後に、実務で使いやすい判断基準を整理します。

条件推奨する選択
新規の本番ワークロードコンテナー単位のスループットから始める
負荷が安定しているmanual throughputを検討する
負荷が読みにくいautoscale throughputを検討する
リージョンやパーティションごとの負荷差が大きいdynamic autoscaleを確認する
低負荷の複数コンテナー共有データベーススループットを検討できる
重要コンテナーや大口テナント専用コンテナースループットに分離する
移行初期共有で始めても、安定後に専用化を再評価する
Deployment Stamps低トラフィックstampは共有、高トラフィックstampは専用を基本にする

Azure Cosmos DBのスループット設計は、RU/sをいくつにするかだけの問題ではありません。コンテナー単位かデータベース単位か、manualかautoscaleか、パーティションキーが偏っていないか、移行後に直接変換できない設定を選んでいないかまで含めて判断する必要があります。

まずは既存環境の共有スループットDB、429エラー、Normalized RU Consumption、コンテナー数を確認してください。そのうえで、重要コンテナーは専用スループットへ、変動が大きいワークロードはautoscaleへ、低トラフィックのstampや検証環境は共有スループットへ、というように用途ごとに分けて設計するのが、2026年時点のAzure Cosmos DB運用で失敗しにくい進め方です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次