Anforderungseinheiten in Azure Cosmos DBRequest Units in Azure Cosmos DB

GILT FÜR: SQL-API Cassandra-API Gremlin-API Tabellen-API Azure Cosmos DB-API für MongoDB

Azure Cosmos DB unterstützt viele APIs wie z.B. SQL, MongoDB, Cassandra, Gremlin und Tabelle.Azure Cosmos DB supports many APIs, such as SQL, MongoDB, Cassandra, Gremlin, and Table. Jede API verfügt über einen eigenen Satz von Datenbankvorgängen.Each API has its own set of database operations. Diese Vorgänge reichen von einfachen Lese- und Schreibvorgängen für Datenpunkte bis hin zu komplexen Abfragen.These operations range from simple point reads and writes to complex queries. Jeder Datenbankvorgang beansprucht je nach Komplexität eine bestimmte Menge an Systemressourcen.Each database operation consumes system resources based on the complexity of the operation.

Die Kosten sämtlicher Datenbankvorgänge werden von Azure Cosmos DB normalisiert und in Anforderungseinheiten (Request Units, RUs) ausgedrückt.The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). Anforderungseinheiten stellen praktisch die „Währung“ zur Abstrahierung von Systemressourcen wie CPU, IOPS und Arbeitsspeicher dar, die zum Ausführen der von Azure Cosmos DB unterstützten Datenbankvorgänge erforderlich sind.Request unit is a performance currency abstracting the system resources such as CPU, IOPS, and memory that are required to perform the database operations supported by Azure Cosmos DB.

Die Kosten für einen Punktlesevorgang (d. h. das Abrufen eines einzelnen Elements anhand seiner ID und seines Partitionsschlüsselwerts) für ein Element von 1 KB betragen 1 Anforderungseinheit (oder 1 RU).The cost to do a point read (i.e. fetching a single item by its ID and partition key value) for a 1 KB item is 1 Request Unit (or 1 RU). Allen anderen Datenbankvorgängen werden analog dazu ebenfalls Kosten in RUs zugewiesen.All other database operations are similarly assigned a cost using RUs. Unabhängig davon, welche API Sie für die Interaktion mit Ihrem Azure Cosmos-Container verwenden, werden die Kosten immer in RUs gemessen.No matter which API you use to interact with your Azure Cosmos container, costs are always measured by RUs. Unabhängig davon, ob es sich bei dem Datenbankvorgang um einen Schreib-, Lese- oder Abfragevorgang handelt, werden die Kosten immer in RUs gemessen.Whether the database operation is a write, point read, or query, costs are always measured in RUs.

Die folgende Abbildung zeigt eine Übersicht über RUs:The following image shows the high-level idea of RUs:

Von Datenbankvorgängen genutzte Anforderungseinheiten

Zur Verwaltung und Planung der Kapazität stellt Azure Cosmos DB sicher, dass die Anzahl von RUs für einen bestimmten Datenbankvorgang und ein bestimmtes Dataset deterministisch ist.To manage and plan capacity, Azure Cosmos DB ensures that the number of RUs for a given database operation over a given dataset is deterministic. Sie können den Antwortheader untersuchen, um die von einem Datenbankvorgang genutzte Anzahl von RUs zu ermitteln.You can examine the response header to track the number of RUs that are consumed by any database operation. Wenn Sie mit den Faktoren, die sich auf die Gebühren für RUs auswirken, sowie mit den Durchsatzanforderungen Ihrer Anwendung vertraut sind, können Sie Ihre Anwendung kostengünstig ausführen.When you understand the factors that affect RU charges and your application's throughput requirements, you can run your application cost effectively.

Die Art des Azure Cosmos-Kontos, das Sie verwenden, bestimmt die Art, auf die verbrauchte RUs in Rechnung gestellt werden.The type of Azure Cosmos account you're using determines the way consumed RUs get charged. Es gibt drei Modi, die Sie für die Erstellung eines Kontos verwenden können:There are 3 modes in which you can create an account:

  1. Bereitgestellter Durchsatz: In diesem Modus wird die Anzahl von Anforderungseinheiten für Ihre Anwendung auf Sekundenbasis (in Schritten von jeweils 100 RUs pro Sekunde) bereitgestellt.Provisioned throughput mode: In this mode, you provision the number of RUs for your application on a per-second basis in increments of 100 RUs per second. Um den bereitgestellten Durchsatz für Ihre Anwendung zu skalieren, können Sie die Anzahl der RUs jederzeit in Schritten von 100 RUs erhöhen oder verringern.To scale the provisioned throughput for your application, you can increase or decrease the number of RUs at any time in increments or decrements of 100 RUs. Sie können Ihre Änderungen entweder programmgesteuert oder über das Azure-Portal vornehmen.You can make your changes either programmatically or by using the Azure portal. Die Menge der bereitgestellten RUs pro Sekunde wird auf Stundenbasis abgerechnet.You are billed on an hourly basis for the amount of RUs per second you have provisioned. Weitere Informationen finden Sie im Artikel Bereitgestellter Durchsatz.To learn more, see the Provisioned throughput article.

    Durchsatz kann in zwei Granularitäten bereitgestellt werden:You can provision throughput at two distinct granularities:

  2. Serverloser Modus: In diesem Modus müssen Sie beim Erstellen von Ressourcen in Ihrem Azure Cosmos-Konto keinen Durchsatz bereitstellen.Serverless mode: In this mode, you don't have to provision any throughput when creating resources in your Azure Cosmos account. Am Ende des Abrechnungszeitraums wird Ihnen die Anzahl der Anforderungseinheiten in Rechnung gestellt, die von den Datenbankvorgängen genutzt wurden.At the end of your billing period, you get billed for the amount of Request Units that has been consumed by your database operations. Weitere Informationen finden Sie im Artikel Serverloser Durchsatz.To learn more, see the Serverless throughput article.

  3. Autoskalierung: In diesem Modus können Sie den Durchsatz (RU/s) Ihrer Datenbank oder Ihres Containers automatisch und sofort anhand der Nutzung skalieren, ohne dass sich dies auf die Verfügbarkeit, die Wartezeit, den Durchsatz oder die Leistung der Workload auswirkt.Autoscale mode: In this mode, you can automatically and instantly scale the throughput (RU/s) of your database or container based on it's usage, without impacting the availability, latency, throughput, or performance of the workload. Dieser Modus eignet sich gut für unternehmenskritische Workloads, die über variable oder unvorhersehbare Datenverkehrsmuster verfügen und SLAs für hohe Leistung und Skalierung erfordern.This mode is well suited for mission-critical workloads that have variable or unpredictable traffic patterns, and require SLAs on high performance and scale. Weitere Informationen finden Sie im Artikel Durchsatz mit Autoskalierung.To learn more, see the autoscale throughput article.

Aspekte zu AnforderungseinheitenRequest Unit considerations

Berücksichtigen Sie die folgenden Faktoren, wenn Sie die Anzahl der für Ihre Workload verbrauchen RUs schätzen:While you estimate the number of RUs consumed by your workload, consider the following factors:

  • Elementgröße: Je größer ein Element, desto mehr RUs werden beim Lesen oder Schreiben des Elements genutzt.Item size: As the size of an item increases, the number of RUs consumed to read or write the item also increases.

  • Elementindizierung: Standardmäßig wird jedes Element automatisch indiziert.Item indexing: By default, each item is automatically indexed. Wenn Sie einige Elemente in einem Container nicht indizieren, werden weniger RUs genutzt.Fewer RUs are consumed if you choose not to index some of your items in a container.

  • Anzahl der Elementeigenschaften: Bei Verwendung der standardmäßigen Indizierung für alle Eigenschaften erhöht sich die Anzahl von RUs, die beim Schreiben eines Elements genutzt werden, wenn sich die Anzahl von Elementeigenschaften erhöht.Item property count: Assuming the default indexing is on all properties, the number of RUs consumed to write an item increases as the item property count increases.

  • Indizierte Eigenschaften: Eine Indexrichtlinie für jeden Container gibt an, welche Eigenschaften standardmäßig indiziert werden.Indexed properties: An index policy on each container determines which properties are indexed by default. Zum Verringern der für Schreibvorgänge genutzten RUs begrenzen Sie die Anzahl indizierter Eigenschaften.To reduce the RU consumption for write operations, limit the number of indexed properties.

  • Datenkonsistenz: Im Vergleich zu anderen, weniger strengen Konsistenzebenen nutzen die Konsistenzebenen „Stark“ und „Begrenzte Veraltung“ bei Lesevorgängen ungefähr zweimal mehr RUs.Data consistency: The strong and bounded staleness consistency levels consume approximately two times more RUs while performing read operations when compared to that of other relaxed consistency levels.

  • Lesetypen: Punktlesevorgänge kosten erheblich weniger RUs als Abfragen.Type of reads: Point reads cost significantly fewer RUs than queries.

  • Abfragemuster: Die Komplexität einer Abfrage wirkt sich darauf aus, wie viele RUs für einen Vorgang verbraucht werden.Query patterns: The complexity of a query affects how many RUs are consumed for an operation. Faktoren, die die Kosten von Abfragevorgängen beeinflussen:Factors that affect the cost of query operations include:

    • Die Anzahl der AbfrageergebnisseThe number of query results
    • Die Anzahl der PrädikateThe number of predicates
    • Die Art der PrädikateThe nature of the predicates
    • Die Anzahl der benutzerdefinierten FunktionenThe number of user-defined functions
    • Die Größe der QuelldatenThe size of the source data
    • Die Größe des ResultsetsThe size of the result set
    • ProjektionenProjections

    Die gleiche Abfrage mit den gleichen Daten beansprucht bei wiederholter Ausführung immer die gleiche Anzahl von RUs.The same query on the same data will always costs the same number of RUs on repeated executions.

  • Skriptnutzung: Bei gespeicherten Prozeduren und Triggern hängt die Nutzung von RUs genau wie bei Abfragen von der Komplexität der ausgeführten Vorgänge ab.Script usage: As with queries, stored procedures and triggers consume RUs based on the complexity of the operations that are performed. Sehen Sie sich beim Entwickeln Ihrer Anwendung den Request-Charge-Header an, um zu ermitteln, wie viele RUs der jeweilige Vorgang erfordert.As you develop your application, inspect the request charge header to better understand how much RU capacity each operation consumes.

Anforderungseinheiten und mehrere RegionenRequest units and multiple regions

Wenn Sie R RUs in einem Cosmos-Container (oder einer Datenbank) bereitstellen, stellt Cosmos DB sicher, dass in jeder Region, die mit Ihrem Cosmos-Konto verknüpft ist, R RUs verfügbar sind.If you provision 'R' RUs on a Cosmos container (or database), Cosmos DB ensures that 'R' RUs are available in each region associated with your Cosmos account. Sie können RUs nicht selektiv einer bestimmten Region zuweisen.You can't selectively assign RUs to a specific region. Die in einem Cosmos-Container (oder einer Datenbank) bereitgestellten RUs werden in allen mit Ihrem Cosmos-Konto verbundenen Regionen bereitgestellt.The RUs provisioned on a Cosmos container (or database) are provisioned in all the regions associated with your Cosmos account.

Angenommen, ein Cosmos-Container ist mit R RUs konfiguriert, und es gibt N Regionen, die dem Cosmos-Konto zugeordnet sind, dann beträgt die Gesamtzahl von im Container verfügbaren RUs = R x N.Assuming that a Cosmos container is configured with 'R' RUs and there are 'N' regions associated with the Cosmos account, the total RUs available globally on the container = R x N.

Die Wahl des Konsistenzmodells wirkt sich auch auf den Durchsatz aus.Your choice of consistency model also affects the throughput. Für die eher gelockerten Konsistenzebenen (z.B. Sitzung, Präfixkonsistenz und letztliche Konsistenz) können Sie den etwa 2-fachen Lesedurchsatz im Vergleich zu höheren Konsistenzebenen (z.B. begrenzte Veraltung oder starke Konsistenz) erzielen.You can get approximately 2x read throughput for the more relaxed consistency levels (e.g., session, consistent prefix and eventual consistency) compared to stronger consistency levels (e.g., bounded staleness or strong consistency).

Nächste SchritteNext steps