Provisioned
Azure Cosmos DB allows users to manually increase or decrease the number of RU/s. With this option, users can allocate RU/s at the database level and at the container level through the Azure Portal or programmatically using the .NET or Java SDK. The minimum throughput that can be allocated for a container or database is 400 RU/s.
Provisioned throughput on an Azure Cosmos DB database is shared across all the containers in the database. This means that all containers share the compute resources that are allocated to a database. There is also an option to dedicate throughput to specific containers. For example, let’s say that you create a database with five containers and one of these containers requires dedicated throughput. When provisioning this container, you can enable the Provision dedicated throughput for your container option to explicitly allocate RU/s to the container. The rest of the containers will share the throughput allocated to the database.
There are a couple of caveats regarding the 400 RU/s minimum for provisioned throughput. The actual minimum is typically the maximum of the following:
- 400 RU/s
- 10 RU/s per every 1 GB added to storage
- The highest number of RU/s previously provisioned divided by 100
For example, if 50 GB of data is added to a new container, then the minimum RU/s for that container is 500 RU/s.
Provisioned throughput is difficult to calculate when first deploying a database. It’s important to understand how much data you will be storing, how many containers you will need, and what type of queries will be interacting with the database. A helpful tool for estimating throughput and throughput cost can be found at https://cosmos.azure.com/capacitycalculator. The calculator uses parameters such as the number of regions, whether there are additional write regions, the volume of data stored, and the number of create, read, and delete operations per second to estimate the number of RU/s needed and how much the workload will cost.