Dela via


Prioritetsbaserad körning i Azure Cosmos DB

GÄLLER FÖR: NoSQL

Med prioritetsbaserad körning kan användare ange prioritet för begäranden som skickas till Azure Cosmos DB. I de fall då antalet begäranden överskrider den kapacitet som kan bearbetas inom de konfigurerade enheter för begäranden per sekund (RU/s) begränsar Azure Cosmos DB begäranden med låg prioritet för att prioritera körningen av begäranden med hög prioritet.

Den här funktionen gör det möjligt för användare att utföra kritiska uppgifter samtidigt som mindre viktiga uppgifter fördröjs när den totala förbrukningen av containern överskrider de konfigurerade RU/s i scenarier med hög belastning genom att först implementera begränsningsåtgärder för begäranden med låg prioritet. Alla klientprogram som använder SDK försöker utföra begäranden med låg prioritet i enlighet med den konfigurerade återförsöksprincipen .

Kommentar

Prioritetsbaserad körningsfunktion garanterar inte alltid att begäranden med låg prioritet begränsas till förmån för dem med hög prioritet. Detta fungerar på bästa sätt och det finns inga serviceavtal som är kopplade till funktionens prestanda.

Användningsfall

Du kan använda prioritetsbaserad körning när ditt program har olika prioriteter för arbetsbelastningar som körs i samma container. Ett exempel:

  • Prioritera läs-, skriv- eller frågeåtgärder.
  • Prioritera användaråtgärder jämfört med bakgrundsåtgärder som
    • Lagrade procedurer
    • Datainmatning/migrering

Komma igång

Om du vill komma igång med prioritetsbaserad körning går du till sidan Funktioner i ditt Azure Cosmos DB-konto. Välj och aktivera funktionen Prioritetsbaserad körning (förhandsversion).

Skärmbild av funktionen Prioritetsbaserad körning på sidan Funktioner i ett Azure Cosmos DB-konto.

SDK-krav

Kodexempel

using Microsoft.Azure.Cosmos;

//update products catalog with low priority
RequestOptions catalogRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.Low}; 

PartitionKey pk = new PartitionKey(“productId1”); 
ItemResponse<Product> catalogResponse = await this.container.CreateItemAsync<Product>(product1, pk, requestOptions); 

//Display product information to user with high priority
RequestOptions getProductRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.High}; 

string id = “productId2”; 
PartitionKey pk = new PartitionKey(id); 

ItemResponse<Product> productResponse = await this.container.ReadItemAsync< Product>(id, pk, getProductRequestOptions); 

Övervaka prioritetsbaserad körning

Du kan övervaka beteendet för begäranden med låg och hög prioritet med hjälp av Azure Monitor-mått i Azure Portal. Mer information om mått finns i Azure Monitor-mått.

Ändra standardprioritetsnivå för ett Cosmos DB-konto

Om Prioritetsbaserad körning är aktiverad och prioritetsnivån inte har angetts för en begäran från användaren körs alla sådana begäranden med hög prioritet. Du kan ändra standardprioritetsnivån för begäranden i ett Cosmos DB-konto med hjälp av Azure CLI.

Azure CLI

# install preview Azure CLI version 0.26.0 or later
az extension add --name cosmosdb-preview --version 0.26.0

# set subscription context
az account set -s $SubscriptionId

# Enable priority-based execution
az cosmosdb update  --resource-group $ResourceGroup --name $AccountName --enable-priority-based-execution true

# change default priority level
az cosmosdb update  --resource-group $ResourceGroup --name $AccountName --default-priority-level low

Prioritet för datautforskaren

När Prioritetsbaserad körning är aktiverad för ett Cosmos DB-konto körs alla begäranden i Azure Portal datautforskaren med låg prioritet. Du kan justera detta genom att ändra prioritetsinställningen på menyn Inställningar i Datautforskaren.

Kommentar

Den här konfigurationen på klientsidan är endast specifik för den berörda användarens datautforskarens vy och påverkar inte andra användares prioritetsnivå för Datautforskaren eller standardprioritetsnivån för Cosmos DB-kontot.

Skärmbild av prioritetsnivåer i Datautforskaren för ett Azure Cosmos DB-konto.

Begränsningar

  • I nuläget stöds inte prioritetsbaserad körning för serverlösa databaskonton.
  • Funktionen för prioritetsbaserad körning är inte deterministisk för databascontainrar med delat dataflöde.

Kända problem

  • För stark och begränsad föråldringskonsekvensnivå kanske prioriteringen av läsbegäran inte fungerar effektivt så att skrivbegäranden med låg prioritet kan köras oavsett lästrafik med hög prioritet.

Nästa steg