Introduktion till etablerade data flöden i Azure Cosmos DBIntroduction to provisioned throughput in Azure Cosmos DB

Med Azure Cosmos DB kan du ange tillhandahållet data flöde på dina databaser och behållare.Azure Cosmos DB allows you to set provisioned throughput on your databases and containers. Det finns två typer av tillhandahållet data flöde, standard (manuell) eller autoskalning.There are two types of provisioned throughput, standard (manual) or autoscale. I den här artikeln får du en översikt över hur det etablerade data flödet fungerar.This articles gives an overview of how provisioned throughput works.

En Azure Cosmos-databas är en hanteringsenhet för en uppsättning containrar.An Azure Cosmos database is a unit of management for a set of containers. En databas består av en uppsättning schemaoberoende containrar.A database consists of a set of schema-agnostic containers. En Azure Cosmos-container är skalbarhetsenheten för både dataflöde och lagring.An Azure Cosmos container is the unit of scalability for both throughput and storage. En container partitioneras horisontellt över en uppsättning datorer i en Azure-region och distribueras i alla Azure-regioner som är kopplade till ditt Azure Cosmos-konto.A container is horizontally partitioned across a set of machines within an Azure region and is distributed across all Azure regions associated with your Azure Cosmos account.

Med Azure Cosmos DB kan du etablera data flöde med två granularitet:With Azure Cosmos DB, you can provision throughput at two granularities:

  • Azure Cosmos-containrarAzure Cosmos containers
  • Azure Cosmos-databaserAzure Cosmos databases

Ange data flöde i en behållareSet throughput on a container

Det data flöde som har allokerats på en Azure Cosmos-behållare är exklusivt reserverat för den behållaren.The throughput provisioned on an Azure Cosmos container is exclusively reserved for that container. Behållaren tar emot det etablerade data flödet hela tiden.The container receives the provisioned throughput all the time. Det etablerade data flödet på en behållare backas upp av service avtal.The provisioned throughput on a container is financially backed by SLAs. Information om hur du konfigurerar data flöde för standard (manuell) i en behållare finns i etablera data flöde på en Azure Cosmos-behållare.To learn how to configure standard (manual) throughput on a container, see Provision throughput on an Azure Cosmos container. Information om hur du konfigurerar autoskalning av data flöde i en behållare finns i etablera autoskalning genom strömning.To learn how to configure autoscale throughput on a container, see Provision autoscale throughput.

Att ställa in tillhandahållet data flöde på en behållare är det alternativ som används oftast.Setting provisioned throughput on a container is the most frequently used option. Du kan skala data flöde elastiskt för en behållare genom att tillhandahålla valfri mängd data flöde med hjälp av enheter för programbegäran (ru: er).You can elastically scale throughput for a container by provisioning any amount of throughput by using Request Units (RUs).

Det data flöde som har allokerats för en behållare distribueras jämnt mellan de fysiska partitionerna, och en lämplig partitionsnyckel som distribuerar de logiska partitionerna jämnt mellan de fysiska partitionerna distribueras även genom data flödet jämnt över alla logiska partitioner i behållaren.The throughput provisioned for a container is evenly distributed among its physical partitions, and assuming a good partition key that distributes the logical partitions evenly among the physical partitions, the throughput is also distributed evenly across all the logical partitions of the container. Du kan inte selektivt ange data flödet för logiska partitioner.You cannot selectively specify the throughput for logical partitions. Eftersom en eller flera logiska partitioner i en behållare finns i en fysisk partition, hör de fysiska partitionerna exklusivt till behållaren och har stöd för det data flöde som har allokerats på behållaren.Because one or more logical partitions of a container are hosted by a physical partition, the physical partitions belong exclusively to the container and support the throughput provisioned on the container.

Om arbets belastningen som körs på en logisk partition förbrukar mer än det data flöde som allokerats till den underliggande fysiska partitionen, är det möjligt att dina åtgärder kommer att begränsas.If the workload running on a logical partition consumes more than the throughput that was allocated to the underlying physical partition, it's possible that your operations will be rate-limited. Vad som kallas för en aktiv partition inträffar när en logisk partition har oproportionerligt fler förfrågningar än andra nyckel värden.What is known as a hot partition occurs when one logical partition has disproportionately more requests than other partition key values.

När Rate-Limiting inträffar kan du antingen öka det etablerade data flödet för hela behållaren eller utföra åtgärderna igen.When rate-limiting occurs, you can either increase the provisioned throughput for the entire container or retry the operations. Du bör också se till att du väljer en partitionsnyckel som jämnt distribuerar lagringen och begär volym.You also should ensure that you choose a partition key that evenly distributes storage and request volume. Mer information om partitionering finns i partitionering och horisontell skalning i Azure Cosmos DB.For more information about partitioning, see Partitioning and horizontal scaling in Azure Cosmos DB.

Vi rekommenderar att du konfigurerar data flödet på behållar precisionen när du vill ha garanterade prestanda för behållaren.We recommend that you configure throughput at the container granularity when you want guaranteed performance for the container.

Följande bild visar hur en fysisk partition är värd för en eller flera logiska partitioner i en behållare:The following image shows how a physical partition hosts one or more logical partitions of a container:

Fysisk partition

Ange data flöde för en databasSet throughput on a database

Anteckning

Det går för närvarande inte att samla in data flöde i en Azure Cosmos-databas i konton där Kundhanterade nycklar är aktiverade.Provisioning throughput on an Azure Cosmos database is currently not possible in accounts where customer-managed keys are enabled.

När du etablerar data flöde i en Azure Cosmos-databas delas data flödet över alla behållare (kallas delade databas behållare) i databasen.When you provision throughput on an Azure Cosmos database, the throughput is shared across all the containers (called shared database containers) in the database. Ett undantag är om du har angett ett etablerat dataflöde för specifika containrar i databasen.An exception is if you specified a provisioned throughput on specific containers in the database. Att dela databas nivåns etablerade data flöde bland dess behållare är detsamma som att vara värd för en databas på ett kluster med datorer.Sharing the database-level provisioned throughput among its containers is analogous to hosting a database on a cluster of machines. Eftersom alla behållare i en databas delar resurserna som är tillgängliga på en dator, kan du naturligt inte få förutsägbara prestanda för en viss behållare.Because all containers within a database share the resources available on a machine, you naturally do not get predictable performance on any specific container. Information om hur du konfigurerar tillhandahållet data flöde på en databas finns i Konfigurera etablerade data flöde i en Azure Cosmos-databas.To learn how to configure provisioned throughput on a database, see Configure provisioned throughput on an Azure Cosmos database. Information om hur du konfigurerar autoskalning av data flödet i en databas finns i etablera autoskalning genom strömning.To learn how to configure autoscale throughput on a database, see Provision autoscale throughput.

Genom att ställa in data flöde på en Azure Cosmos-databas garanteras att du tar emot det etablerade data flödet för databasen hela tiden.Setting throughput on an Azure Cosmos database guarantees that you receive the provisioned throughput for that database all the time. Eftersom alla behållare i databasen delar det etablerade data flödet ger Azure Cosmos DB inga förutsägbara data flödes garantier för en viss behållare i databasen.Because all containers within the database share the provisioned throughput, Azure Cosmos DB doesn't provide any predictable throughput guarantees for a particular container in that database. Den del av data flödet som en viss behållare kan ta emot är beroende av:The portion of the throughput that a specific container can receive is dependent on:

  • Antalet behållare.The number of containers.
  • Val av partitionsnyckel för olika behållare.The choice of partition keys for various containers.
  • Distributionen av arbets belastningen mellan olika logiska partitioner i behållarna.The distribution of the workload across various logical partitions of the containers.

Vi rekommenderar att du konfigurerar data flödet på en databas när du vill dela data flödet över flera behållare, men inte vill tilldela data flödet till en viss behållare.We recommend that you configure throughput on a database when you want to share the throughput across multiple containers, but don't want to dedicate the throughput to any particular container.

Följande exempel visar var det är önskvärt att etablera data flöde på databas nivå:The following examples demonstrate where it's preferred to provision throughput at the database level:

  • Att dela en Databass etablerade data flöde i en uppsättning behållare är användbart för ett program med flera innehavare.Sharing a database's provisioned throughput across a set of containers is useful for a multitenant application. Varje användare kan representeras av en separat Azure Cosmos-behållare.Each user can be represented by a distinct Azure Cosmos container.

  • Att dela en Databass etablerade data flöde i en uppsättning behållare är användbart när du migrerar en NoSQL-databas, till exempel MongoDB eller Cassandra, som finns på ett kluster med virtuella datorer eller från lokala fysiska servrar till Azure Cosmos DB.Sharing a database's provisioned throughput across a set of containers is useful when you migrate a NoSQL database, such as MongoDB or Cassandra, hosted on a cluster of VMs or from on-premises physical servers to Azure Cosmos DB. Tänk på det etablerade data flödet som kon figurer ATS på din Azure Cosmos-databas som en logisk motsvarighet, men mer kostnads effektivt och elastiskt, till beräknings kapaciteten för ditt MongoDB-eller Cassandra-kluster.Think of the provisioned throughput configured on your Azure Cosmos database as a logical equivalent, but more cost-effective and elastic, to that of the compute capacity of your MongoDB or Cassandra cluster.

Alla behållare som skapats i en databas med ett allokerat data flöde måste skapas med en partitionsnyckel.All containers created inside a database with provisioned throughput must be created with a partition key. Vid en viss tidpunkt distribueras det data flöde som allokerats till en behållare i en databas över alla logiska partitioner i behållaren.At any given point in time, the throughput allocated to a container within a database is distributed across all the logical partitions of that container. När du har behållare som delar ett allokerat data flöde som kon figurer ATS för en databas, kan du inte selektivt använda genomflödet för en speciell behållare eller en logisk partition.When you have containers that share provisioned throughput configured on a database, you can't selectively apply the throughput to a specific container or a logical partition.

Om arbets belastningen på en logisk partition förbrukar mer än det data flöde som har allokerats till en viss logisk partition, är dina åtgärder avgiftsbelagda.If the workload on a logical partition consumes more than the throughput that's allocated to a specific logical partition, your operations are rate-limited. När Rate-Limiting sker kan du antingen öka data flödet för hela databasen eller försöka utföra åtgärderna igen.When rate-limiting occurs, you can either increase the throughput for the entire database or retry the operations. Mer information om partitionering finns i logiska partitioner.For more information on partitioning, see Logical partitions.

Containrar i en databas med delat dataflöde delar på dataflödet (RU/s) som allokerats till databasen.Containers in a shared throughput database share the throughput (RU/s) allocated to that database. Du kan ha upp till fyra containrar med minst 400 RU/s med databasen.You can have up to four containers with a minimum of 400 RU/s on the database. Med standard (manuellt) allokerat data flöde, kräver varje ny behållare efter de första fyra ytterligare 100 RU/s-minimum.With standard (manual) provisioned throughput, each new container after the first four will require an additional 100 RU/s minimum. Om du till exempel har en databas med delat dataflöde med åtta containrar, är databasens minsta RU/s 800 RU/s.For example, if you have a shared throughput database with eight containers, the minimum RU/s on the database will be 800 RU/s. Med autoskalning av allokerat data flöde kan du ha upp till 25 behållare i en databas med autoskalning Max 4000 RU/s (skalas mellan 400-4000 RU/s).With autoscale provisioned throughput, you can have up to 25 containers in a database with autoscale max 4000 RU/s (scales between 400 - 4000 RU/s).

Anteckning

I februari 2020 införde vi en ändring som gör att du kan ha högst 25 behållare i en delad data flödes databas, vilket bättre möjliggör data flödes delning över behållarna.In February 2020, we introduced a change that allows you to have a maximum of 25 containers in a shared throughput database, which better enables throughput sharing across the containers. Efter de första 25 behållarna kan du bara lägga till fler behållare i databasen om de är etablerade med dedikerat data flöde, som är åtskilda från det delade data flödet i databasen.After the first 25 containers, you can add more containers to the database only if they are provisioned with dedicated throughput, which is separate from the shared throughput of the database.
Om ditt Azure Cosmos DB-konto redan innehåller en delad data flödes databas med >= 25 behållare, är kontot och alla andra konton i samma Azure-prenumeration undantagna från den här ändringen.If your Azure Cosmos DB account already contains a shared throughput database with >=25 containers, the account and all other accounts in the same Azure subscription are exempt from this change. Kontakta produkt supporten om du har feedback eller frågor.Please contact product support if you have feedback or questions.

Om arbets belastningarna innebär att du tar bort och återskapar alla samlingar i en databas, rekommenderar vi att du släpper den tomma databasen och återskapar en ny databas innan du skapar samlingen.If your workloads involve deleting and recreating all the collections in a database, it is recommended that you drop the empty database and recreate a new database prior to collection creation. Följande bild visar hur en fysisk partition kan vara värd för en eller flera logiska partitioner som tillhör olika behållare i en databas:The following image shows how a physical partition can host one or more logical partitions that belong to different containers within a database:

Fysisk partition

Ange data flöde för en databas och en behållareSet throughput on a database and a container

Du kan kombinera de två modellerna.You can combine the two models. Etablering av data flöde på både databasen och behållaren tillåts.Provisioning throughput on both the database and the container is allowed. Följande exempel visar hur du etablerar standard (manuellt) etablerat data flöde på en Azure Cosmos-databas och en behållare:The following example shows how to provision standard (manual) provisioned throughput on an Azure Cosmos database and a container:

  • Du kan skapa en Azure Cosmos-databas med namnet Z med standard (manuellt) allokerat data flöde för "K" ru: er.You can create an Azure Cosmos database named Z with standard (manual) provisioned throughput of "K" RUs.

  • Skapa sedan fem behållare med namnet A, B, C, Doch E i databasen.Next, create five containers named A, B, C, D, and E within the database. När du skapar container B, se till att aktivera etablera dedikerat data flöde för det här behållar alternativet och konfigurera "P" -ru: er av etablerat data flöde på den här behållaren.When creating container B, make sure to enable Provision dedicated throughput for this container option and explicitly configure "P" RUs of provisioned throughput on this container. Observera att du bara kan konfigurera delade och dedikerade data flöde när du skapar databasen och behållaren.Note that you can configure shared and dedicated throughput only when creating the database and container.

    Ange data flödet på behållar nivån

  • "K" ru: er-dataflödet delas mellan de fyra behållarna A, C, D, och E. Den exakta mängden data flöde som är tillgängliga för A, C, Deller E varierar.The "K" RUs throughput is shared across the four containers A, C, D, and E. The exact amount of throughput available to A, C, D, or E varies. Det finns inga service avtal för varje enskild behållares data flöde.There are no SLAs for each individual container's throughput.

  • Behållaren med namnet B garanterar att du kan hämta "P" ru: er-dataflöde hela tiden.The container named B is guaranteed to get the "P" RUs throughput all the time. Den backas upp av service avtal.It's backed by SLAs.

Anteckning

Det går inte att konvertera en behållare med ett allokerat data flöde till en delad databas behållare.A container with provisioned throughput cannot be converted to shared database container. Det går inte att konvertera en delad databas behållare till ett dedikerat data flöde.Conversely a shared database container cannot be converted to have a dedicated throughput.

Uppdatera data flödet för en databas eller en behållareUpdate throughput on a database or a container

När du har skapat en Azure Cosmos-behållare eller en databas kan du uppdatera det etablerade data flödet.After you create an Azure Cosmos container or a database, you can update the provisioned throughput. Det finns ingen gräns för maximalt tillhandahållet data flöde som du kan konfigurera i databasen eller behållaren.There is no limit on the maximum provisioned throughput that you can configure on the database or the container.

Om du vill uppskatta det lägsta allokerade data flödet för en databas eller behållare, hitta Max:To estimate the minimum provisioned throughput of a database or container, find the maximum of:

  • 400 RU/s400 RU/s
  • Aktuellt lagrings utrymme i GB * 10 RU/sCurrent storage in GB * 10 RU/s
  • Mest RU/s etablerad i databasen eller containern/100Highest RU/s provisioned on the database or container / 100
  • Antal behållare * 100 RU/s (endast delad data flödes databas)Container count * 100 RU/s (shared throughput database only)

Det faktiska antalet RU/s kan variera beroende på din konto konfiguration.The actual minimum RU/s may vary depending on your account configuration. Du kan använda Azure Monitor mått för att visa historiken över det etablerade data flödet (ru/s) och lagrings utrymme på en resurs.You can use Azure Monitor metrics to view the history of provisioned throughput (RU/s) and storage on a resource.

Du kan hämta det lägsta data flödet för en behållare eller en databas program mässigt genom att använda SDK: erna eller Visa värdet i Azure Portal.You can retrieve the minimum throughput of a container or a database programmatically by using the SDKs or view the value in the Azure portal. När du använder .NET SDK kan du skala det tillhandahållna data flöde svärdet med metoden DocumentClient. ReplaceOfferAsync .When using the .NET SDK, the DocumentClient.ReplaceOfferAsync method allows you to scale the provisioned throughput value. När du använder Java SDK kan du använda metoden RequestOptions. setOfferThroughput för att skala det tillhandahållna data flöde svärdet.When using the Java SDK, the RequestOptions.setOfferThroughput method allows you to scale the provisioned throughput value.

När du använder .NET SDK kan du använda metoden DocumentClient. ReadOfferAsync för att hämta det lägsta data flödet för en behållare eller en databas.When using the .NET SDK, the DocumentClient.ReadOfferAsync method allows you to retrieve the minimum throughput of a container or a database.

Du kan skala det etablerade data flödet för en behållare eller en databas när som helst.You can scale the provisioned throughput of a container or a database at any time. När en skalnings åtgärd utförs för att öka data flödet kan det ta längre tid på grund av system aktiviteterna för att etablera nödvändiga resurser.When a scale operation is performed to increase the throughput, it can take longer time due to the system tasks to provision the required resources. Du kan kontrol lera status för skalnings åtgärden i Azure Portal eller program mässigt med SDK: er.You can check the status of the scale operation in Azure portal or programmatically using the SDKs. När du använder .NET SDK kan du hämta status för skalnings åtgärden med hjälp av- DocumentClient.ReadOfferAsync metoden.When using the .NET SDK, you can get the status of the scale operation by using the DocumentClient.ReadOfferAsync method.

Jämförelse av modellerComparison of models

Den här tabellen visar en jämförelse mellan Provisioning standard (manuell) data flöde i en databas jämfört med på en behållare.This table shows a comparison between provisioning standard (manual) throughput on a database vs. on a container.

ParameterParameter Standard (manuell) genom strömning på en databasStandard (manual) throughput on a database Standard (manuell) genom strömning på en behållareStandard (manual) throughput on a container Autoskalning av data flöde på en databasAutoscale throughput on a database Autoskalning av data flöde på en behållareAutoscale throughput on a container
Start punkt (minst RU/s)Entry point (minimum RU/s) 400 RU/s.400 RU/s. Efter de första fyra behållarna kräver varje ytterligare behållare minst 100 RU/sAfter the first four containers, each additional container requires a minimum of 100 RU/s 400400 Skala mellan 400-4000 RU/s.Autoscale between 400 - 4000 RU/s. Kan ha upp till 25 behållare utan RU/s minimum per containerCan have up to 25 containers with no RU/s minimum per container Skala mellan 400-4000 RU/s.Autoscale between 400 - 4000 RU/s.
Lägsta RU/s per behållareMinimum RU/s per container 100100 400400 -- Skala mellan 400-4000 RU/sAutoscale between 400 - 4000 RU/s
Maximalt ru: erMaximum RUs Obegränsat, på databasen.Unlimited, on the database. Obegränsat, på behållaren.Unlimited, on the container. Obegränsat, på databasen.Unlimited, on the database. Obegränsat, på behållaren.Unlimited, on the container.
Ru: er tilldelad eller tillgänglig för en speciell behållareRUs assigned or available to a specific container Inga garantier.No guarantees. Ru: er som tilldelas en specifik behållare beror på egenskaperna.RUs assigned to a given container depend on the properties. Egenskaper kan vara valet av partitionsnyckel för behållare som delar data flödet, distributionen av arbets belastningen och antalet behållare.Properties can be the choice of partition keys of containers that share the throughput, the distribution of the workload, and the number of containers. Alla ru: er som kon figurer ATS på behållaren är exklusivt reserverade för behållaren.All the RUs configured on the container are exclusively reserved for the container. Inga garantier.No guarantees. Ru: er som tilldelas en specifik behållare beror på egenskaperna.RUs assigned to a given container depend on the properties. Egenskaper kan vara valet av partitionsnyckel för behållare som delar data flödet, distributionen av arbets belastningen och antalet behållare.Properties can be the choice of partition keys of containers that share the throughput, the distribution of the workload, and the number of containers. Alla ru: er som kon figurer ATS på behållaren är exklusivt reserverade för behållaren.All the RUs configured on the container are exclusively reserved for the container.
Maximalt lagrings utrymme för en behållareMaximum storage for a container Många.Unlimited. ObegränsatUnlimited ObegränsatUnlimited ObegränsatUnlimited
Maximalt data flöde per logisk partition för en behållareMaximum throughput per logical partition of a container 10 000 RU/s10K RU/s 10 000 RU/s10K RU/s 10 000 RU/s10K RU/s 10 000 RU/s10K RU/s
Maximalt lagrings utrymme (data index) per logisk partition för en behållareMaximum storage (data + index) per logical partition of a container 20 GB20 GB 20 GB20 GB 20 GB20 GB 20 GB20 GB

Nästa stegNext steps