Azure Cosmos DB'de öncelik tabanlı yürütme

Öncelik tabanlı yürütme, kullanıcıların Azure Cosmos DB'ye gönderilen isteklerin önceliğini belirtmesine olanak tanır. İstek sayısının yapılandırılan saniyede İstek Birimleri (RU/sn) içinde işlenebilen kapasiteyi aştığı durumlarda Azure Cosmos DB, yüksek öncelikli isteklerin yürütülmesine öncelik vermek için düşük öncelikli istekleri kısıtlar.

Bu özellik, yüksek yük senaryolarında kapsayıcının toplam tüketimi yapılandırılan RU/sn değerini aştığında, öncelikle düşük öncelikli istekler için hız sınırlama önlemleri uygulayarak kullanıcıların kritik görevleri yürütmesini sağlar. SDK kullanan tüm istemci uygulamaları, yapılandırılan yeniden deneme ilkesine uygun olarak düşük öncelikli istekleri yeniden dener.

Note

Öncelik tabanlı yürütme özelliği, düşük öncelikli isteklerin yüksek öncelikliler lehine her zaman sınırlandırılacağını garanti etmez. Bu, en iyi çaba temelinde çalışır ve özelliğin performansına bağlı SLA'lar yoktur.

Kullanım örnekleri

Uygulamanız aynı kapsayıcıda çalışan iş yükleri için farklı önceliklere sahip olduğunda öncelik tabanlı yürütmeyi kullanabilirsiniz. Örneğin

  • Okuma, yazma veya sorgu işlemlerinin önceliklerini belirleme.
  • Kullanıcı eylemlerini ve arka plan işlemlerinin önceliklerini belirleme
    • Saklanan prosedürler
    • Veri alımı/geçiş

Başlangıç Yapmak

Öncelik tabanlı yürütmeyi kullanmaya başlamak için Azure Cosmos DB hesabınızdaki Özellikler sayfasına gidin. Öncelik tabanlı yürütme özelliğini seçin ve etkinleştirin.

Azure Cosmos DB hesabının Özellikler sayfasındaki Öncelik tabanlı yürütme özelliğinin ekran görüntüsü.

SDK gereksinimleri

  • .NET v3: v3.38.0 veya üstü
  • Java v4: v4.45.0 veya üstü
  • Spark 3.2: v4.19.0 veya üzeri
  • JavaScript v4: v4.0.0 veya üstü
  • Python: v4.5.2b2 veya üzeri. Yalnızca önizleme sürümünde kullanılabilir.

Kod örnekleri

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

Öncelik tabanlı yürütmeyi izleme

Azure portalda Azure İzleyici ölçümlerini kullanarak düşük ve yüksek öncelikli isteklerin davranışını izleyebilirsiniz. Ölçümler hakkında daha fazla bilgi edinmek için bkz . Azure İzleyici ölçümleri.

Cosmos DB hesabının varsayılan öncelik düzeyini değiştirme

Öncelik tabanlı yürütme etkinleştirildiyse ve kullanıcı tarafından bir istek için öncelik düzeyi belirtilmemişse, bu tür isteklerin tümü yüksek öncelikli olarak yürütülür. Azure CLI kullanarak Cosmos DB hesabındaki isteklerin varsayılan öncelik düzeyini değiştirebilirsiniz.

Azure CLI

Azure CLI sürüm 2.81.0 veya üzerini yükleme


# 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"

Veri gezgini önceliği

Cosmos DB hesabı için Öncelik tabanlı yürütme etkinleştirildiğinde, Azure portalının Veri Gezgini tüm istekler düşük öncelikli olarak yürütülür. Veri Gezgini Ayarlar menüsündeki öncelik ayarını değiştirerek bunu ayarlayabilirsiniz.

Note

Bu istemci tarafı yapılandırması yalnızca ilgili kullanıcının Veri gezgini görünümüne özgüdür ve diğer kullanıcıların Veri gezgini öncelik düzeyini veya Cosmos DB hesabının varsayılan öncelik düzeyini etkilemez.

Azure Cosmos DB hesabının Veri gezginindeki öncelik düzeylerinin ekran görüntüsü.

Sınırlamalar

  • Öncelik tabanlı yürütme şu anda sunucusuz veritabanı hesapları için desteklenmiyor.
  • Öncelik tabanlı yürütme özelliğinin davranışı, paylaşılan aktarım hızı veritabanı kapsayıcıları için belirleyici değildir.
  • Güçlü ve sınırlanmış eskime tutarlılığı düzeyleri için okuma isteği önceliklendirmesi, düşük öncelikli yazma isteklerinin, yüksek öncelikli okuma trafiğinden bağımsız olarak yürütülmesine izin vererek, etkili çalışmayabilir.

Sonraki Adımlar

  • Öncelik tabanlı yürütmeyle ilgili Sıkça Sorulan Sorular'a bakın.
  • Patlama kapasitesi hakkında daha fazla bilgi edinin