Condividi tramite


Esecuzione basata su priorità in Azure Cosmos DB

L'esecuzione basata su priorità consente agli utenti di specificare la priorità delle richieste inviate ad Azure Cosmos DB. Nei casi in cui il numero di richieste superi la capacità che può essere elaborata all'interno delle unità di richiesta al secondo (RU/s) configurate, Azure Cosmos DB limita le richieste a bassa priorità per assegnare la priorità all'esecuzione delle richieste con priorità elevata.

Questa funzionalità consente agli utenti di eseguire attività critiche ritardando le attività meno importanti quando il consumo totale di contenitori supera prima le UR/s configurate in scenari di carico elevato implementando misure di limitazione per le richieste con priorità bassa. Qualsiasi applicazione client che usa l'SDK riprova le richieste con priorità bassa in base ai criteri di ripetizione configurati.

Note

La funzionalità di esecuzione basata su priorità non garantisce sempre la limitazione delle richieste con priorità bassa a favore di quelle con priorità alta. Questo funziona su base ottimale e non esistono contratti di servizio collegati alle prestazioni della funzionalità.

Casi d'uso

È possibile usare l'esecuzione basata su priorità quando l'applicazione ha priorità diverse per i carichi di lavoro in esecuzione nello stesso contenitore. Ad esempio,

  • Assegnazione delle priorità alle operazioni di lettura, scrittura o query.
  • Assegnazione delle priorità alle azioni utente rispetto alle operazioni in background, ad esempio
    • Stored procedure
    • Inserimento/migrazione dei dati

Introduzione

Per iniziare a usare l'esecuzione basata su priorità, passare alla pagina Funzionalità nell'account Azure Cosmos DB. Selezionare e abilitare la funzionalità di esecuzione basata su priorità .

Screenshot della funzionalità di esecuzione basata su priorità nella pagina Funzionalità di un account Azure Cosmos DB.

Requisiti dell'SDK

  • .NET v3: v3.38.0 o versione successiva
  • Java v4: v4.45.0 o versione successiva
  • Spark 3.2: v4.19.0 o versione successiva
  • JavaScript v4: v4.0.0 o versione successiva
  • Python: v4.5.2b2 o versione successiva. Disponibile solo in versione di anteprima.

Esempi di codice

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); 

Monitorare l'esecuzione basata su priorità

È possibile monitorare il comportamento delle richieste con priorità bassa e alta usando le metriche di Monitoraggio di Azure nel portale di Azure. Per altre informazioni sulle metriche, vedere Metriche di Monitoraggio di Azure.

Modificare il livello di priorità predefinito di un account Cosmos DB

Se l'esecuzione basata su priorità è abilitata e il livello di priorità non viene specificato per una richiesta dall'utente, tutte queste richieste vengono eseguite con priorità alta. È possibile modificare il livello di priorità predefinito delle richieste in un account Cosmos DB usando l'interfaccia della riga di comando di Azure.

Interfaccia della riga di comando di Azure

Installare la CLI di Azure versione 2.81.0 o successiva


# set subscription context
az account set -s $SubscriptionId

# Enable priority-based execution
az cosmosdb update `
  -g <resource-group> `
  -n <account-name> `
  --enable-priority-based-execution true

# change default priority level
az cosmosdb update `
  -g <resource-group> `
  -n <account-name> `
  --default-priority-level low

Azure PowerShell


# Install module Az.CosmosDB 1.19.0 or later

Install-Module -Name Az.CosmosDB -Force

# Login and Set Subscription

Connect-AzAccount
Set-AzContext -Subscription <subscription-id>

# Enable Priority Based Execution

Update-AzCosmosDBAccount `
  -ResourceGroupName "<resource-group>" `
  -Name "<account-name>" `
  -EnablePriorityBasedExecution $true

# Set Default Priority Level

Update-AzCosmosDBAccount `
  -ResourceGroupName "<resource-group>" `
  -Name "<account-name>" `
  -DefaultPriorityLevel "Low"

Priorità di Esplora dati

Quando l'esecuzione basata su priorità è abilitata per un account Cosmos DB, tutte le richieste in Esplora dati del portale di Azure vengono eseguite con priorità bassa. È possibile modificare questa impostazione modificando l'impostazione di priorità nel menu Impostazioni di Esplora dati.

Note

Questa configurazione lato client è specifica solo per la visualizzazione di Esplora dati dell'utente interessato e non influisce sul livello di priorità di Esplora dati di altri utenti o sul livello di priorità predefinito dell'account Cosmos DB.

Screenshot dei livelli di priorità in Esplora dati di un account Azure Cosmos DB.

Limitazioni

  • L'esecuzione basata su priorità non è attualmente supportata per gli account di database serverless.
  • Il comportamento della funzionalità di esecuzione basata su priorità non è deterministico per i contenitori di database con velocità effettiva condivisa.
  • Per quanto riguarda i livelli di coerenza con obsolescenza forte e vincolata, la definizione delle priorità delle richieste di lettura potrebbe non funzionare in modo efficace, consentendo l'esecuzione di richieste di scrittura con priorità bassa a prescindere dal traffico di lettura con priorità elevata.

Passaggi successivi