Azure Cosmos DB SQL API'sinde yürütülen işlemler için istek birimi ücretini bulma

ŞUNLAR IÇIN GEÇERLIDIR: SQL API

Azure Cosmos DB SQL, MongoDB, Cassandra, Gremlin ve Tablo gibi birçok API'yi destekler. Her API'nin kendi veritabanı işlemleri kümesi vardır. Bu işlemler basit nokta okuma ve yazma işlemlerinden karmaşık sorgulara kadar çeşitlilik gösterir. Her veritabanı işlemi, işlemin karmaşıklığı temelinde sistem kaynaklarını kullanır.

Tüm veritabanı işlemlerinin maliyeti Azure Cosmos DB tarafından normalleştirilir ve İstek Birimi (veya kısa RU) ile ifade edilir. İstek ücreti, tüm veritabanı işlemleriniz tarafından kullanılan istek birimleridir. RU'ları, Azure Cosmos DB tarafından desteklenen veritabanı işlemlerini gerçekleştirmek için gereken CPU, IOPS ve bellek gibi sistem kaynaklarını soyutlayan bir performans para birimi olarak düşünebilirsiniz. Azure Cosmos kapsayıcınızla etkileşim kurmak için hangi API'yi kullanırsanız kullanın maliyetler her zaman RU cinsinden ölçülür. Veritabanı işleminin yazma, nokta okuma veya sorgu olmasına bakılmaksızın maliyetler her zaman RU cinsinden ölçülür. Daha fazla bilgi edinmek için istek birimleri ve dikkat edilmesi gerekenler makalesine bakın.

Bu makalede, Azure Cosmos DB SQL API'sindeki bir kapsayıcıda yürütülen herhangi bir işlem için istek birimi (RU) tüketimini bulmanın farklı yolları gösterilir. Farklı bir API kullanıyorsanız RU/sn ücretini bulmak için MongoDB, Cassandra API, Gremlin API ve Tablo API'si için API makalelerine bakın.

Şu anda bu tüketimi yalnızca Azure portal kullanarak veya SDK'lardan biri aracılığıyla Azure Cosmos DB'den geri gönderilen yanıtı inceleyerek ölçebilirsiniz. SQL API'sini kullanıyorsanız, Azure Cosmos kapsayıcısı üzerinde bir işlem için RU tüketimini bulmak için birden çok seçeneğiniz vardır.

Azure portalını kullanma

  1. Azure Portal’ında oturum açın.

  2. Yeni bir Azure Cosmos hesabı oluşturun ve bunu verilerle besleyin veya zaten veri içeren mevcut bir Azure Cosmos hesabını seçin.

  3. Veri Gezgini bölmesine gidin ve üzerinde çalışmak istediğiniz kapsayıcıyı seçin.

  4. Yeni SQL Sorgusu'nu seçin.

  5. Geçerli bir sorgu girin ve sorguyu yürüt'e tıklayın.

  6. Yürüttüğüniz isteğin gerçek istek ücretini görüntülemek için Sorgu İstatistikleri'ni seçin.

Screenshot of a SQL query request charge in the Azure portal

.NET SDK’yı kullanma

.NET SDK v2'den döndürülen nesneler bir RequestCharge özelliği kullanıma sunar:

ResourceResponse<Document> fetchDocumentResponse = await client.ReadDocumentAsync(
    UriFactory.CreateDocumentUri("database", "container", "itemId"),
    new RequestOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    });
var requestCharge = fetchDocumentResponse.RequestCharge;

StoredProcedureResponse<string> storedProcedureCallResponse = await client.ExecuteStoredProcedureAsync<string>(
    UriFactory.CreateStoredProcedureUri("database", "container", "storedProcedureId"),
    new RequestOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    });
requestCharge = storedProcedureCallResponse.RequestCharge;

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
    UriFactory.CreateDocumentCollectionUri("database", "container"),
    "SELECT * FROM c",
    new FeedOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    }).AsDocumentQuery();
while (query.HasMoreResults)
{
    FeedResponse<dynamic> queryResponse = await query.ExecuteNextAsync<dynamic>();
    requestCharge = queryResponse.RequestCharge;
}

Java SDK'sını kullanma

Java SDK'sından döndürülen nesneler bir getRequestCharge() yöntemi kullanıma sunar:

RequestOptions requestOptions = new RequestOptions();
requestOptions.setPartitionKey(new PartitionKey("partitionKey"));

Observable<ResourceResponse<Document>> readDocumentResponse = client.readDocument(String.format("/dbs/%s/colls/%s/docs/%s", "database", "container", "itemId"), requestOptions);
readDocumentResponse.subscribe(result -> {
    double requestCharge = result.getRequestCharge();
});

Observable<StoredProcedureResponse> storedProcedureResponse = client.executeStoredProcedure(String.format("/dbs/%s/colls/%s/sprocs/%s", "database", "container", "storedProcedureId"), requestOptions, null);
storedProcedureResponse.subscribe(result -> {
    double requestCharge = result.getRequestCharge();
});

FeedOptions feedOptions = new FeedOptions();
feedOptions.setPartitionKey(new PartitionKey("partitionKey"));

Observable<FeedResponse<Document>> feedResponse = client
    .queryDocuments(String.format("/dbs/%s/colls/%s", "database", "container"), "SELECT * FROM c", feedOptions);
feedResponse.forEach(result -> {
    double requestCharge = result.getRequestCharge();
});

Daha fazla bilgi için bkz. Hızlı Başlangıç: Azure Cosmos DB SQL API hesabı kullanarak Java uygulaması derleme.

Node.js SDK'sını kullanma

Node.js SDK'sından döndürülen nesneler, temel alınan HTTP API'sinin döndürdiği tüm üst bilgileri eşleyen bir headers alt nesne sunar. İstek ücreti anahtarı altında x-ms-request-charge sağlanır:

const item = await client
    .database('database')
    .container('container')
    .item('itemId', 'partitionKey')
    .read();
var requestCharge = item.headers['x-ms-request-charge'];

const storedProcedureResult = await client
    .database('database')
    .container('container')
    .storedProcedure('storedProcedureId')
    .execute({
        partitionKey: 'partitionKey'
    });
requestCharge = storedProcedureResult.headers['x-ms-request-charge'];

const query = client.database('database')
    .container('container')
    .items
    .query('SELECT * FROM c', {
        partitionKey: 'partitionKey'
    });
while (query.hasMoreResults()) {
    var result = await query.executeNext();
    requestCharge = result.headers['x-ms-request-charge'];
}

Daha fazla bilgi için bkz. Hızlı Başlangıç: Azure Cosmos DB SQL API hesabı kullanarak Node.js uygulaması derleme.

Python SDK'yı kullanma

Python SDK'sından alınan nesne, CosmosClient yürütülen son işlem için temel HTTP API'sinin döndürdiği tüm üst bilgileri eşleyen bir last_response_headers sözlük kullanıma sunar. İstek ücreti anahtarı altında x-ms-request-charge sağlanır:

response = client.ReadItem(
    'dbs/database/colls/container/docs/itemId', {'partitionKey': 'partitionKey'})
request_charge = client.last_response_headers['x-ms-request-charge']

response = client.ExecuteStoredProcedure(
    'dbs/database/colls/container/sprocs/storedProcedureId', None, {'partitionKey': 'partitionKey'})
request_charge = client.last_response_headers['x-ms-request-charge']

Daha fazla bilgi için bkz. Hızlı Başlangıç: Azure Cosmos DB SQL API hesabı kullanarak Python uygulaması derleme.

Sonraki adımlar

RU tüketiminizi iyileştirme hakkında bilgi edinmek için şu makalelere bakın: