Znajdowanie opłaty za jednostkę żądania dla operacji w usłudze Azure Cosmos DB for NoSQL
DOTYCZY: NoSQL
Usługa Azure Cosmos DB obsługuje wiele interfejsów API, takich jak SQL, MongoDB, Cassandra, Gremlin i Table. Każdy interfejs API ma własny zestaw operacji bazy danych. Te operacje obejmują od prostych odczytów i zapisów do złożonych zapytań. Każda operacja bazy danych zużywa zasoby systemowe na podstawie złożoności operacji.
Koszt wszystkich operacji bazy danych jest znormalizowany przez usługę Azure Cosmos DB i jest wyrażany przez jednostki żądań (RU). Opłata za żądanie to jednostki żądania używane przez wszystkie operacje bazy danych. Jednostki RU można traktować jako walutę wydajności abstrakcyjną zasobów systemowych, takich jak procesor CPU, liczba operacji we/wy na sekundę i pamięć, które są wymagane do wykonywania operacji bazy danych obsługiwanych przez usługę Azure Cosmos DB. Niezależnie od tego, którego interfejsu API używasz do interakcji z kontenerem, koszty są zawsze mierzone w jednostkach RU. Niezależnie od tego, czy operacja bazy danych jest zapisem, odczytem punktu czy zapytaniem, koszty są zawsze mierzone w jednostkach RU. Aby dowiedzieć się więcej, zobacz Request Units in Azure Cosmos DB (Jednostki żądań w usłudze Azure Cosmos DB).
W tym artykule przedstawiono różne sposoby znajdowania użycia jednostek żądania dla dowolnej operacji uruchamianej względem kontenera w usłudze Azure Cosmos DB for NoSQL. Jeśli używasz innego interfejsu API, zobacz INTERFEJS API dla bazy danych MongoDB, interfejs API dla bazy danych Cassandra, interfejs API dla języka Gremlin i interfejs API dla tabeli.
Obecnie można mierzyć zużycie tylko przy użyciu witryny Azure Portal lub sprawdzając odpowiedź wysłaną z usługi Azure Cosmos DB za pomocą jednego z zestawów SDK. Jeśli używasz interfejsu API dla noSQL, masz wiele opcji znajdowania opłaty za żądanie dla operacji.
Korzystanie z witryny Azure Portal
Zaloguj się w witrynie Azure Portal.
Utwórz nowe konto usługi Azure Cosmos DB i przekaż je za pomocą danych lub wybierz istniejące konto usługi Azure Cosmos DB, które zawiera już dane.
Przejdź do okienka Eksplorator danych, a następnie wybierz kontener, nad którym chcesz pracować.
Wybierz pozycję Nowe zapytanie SQL.
Wprowadź prawidłowe zapytanie, a następnie wybierz pozycję Wykonaj zapytanie.
Wybierz pozycję Statystyki zapytania, aby wyświetlić rzeczywiste opłaty za żądanie wykonane.
Korzystanie z zestawu SDK dla platformy .NET
Obiekty zwracane z zestawu .NET SDK w wersji 2 uwidaczniają RequestCharge
właściwość:
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;
}
Korzystanie z zestawu Java SDK
Obiekty zwracane z zestawu JAVA SDK uwidaczniają metodę getRequestCharge()
:
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();
});
Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji Java przy użyciu konta usługi Azure Cosmos DB for NoSQL.
Korzystanie z zestawu SDK Node.js
Obiekty zwracane z zestawu SDK Node.js uwidaczniają headers
podobiekt, który mapuje wszystkie nagłówki zwracane przez bazowy interfejs API HTTP. Opłata za żądanie jest dostępna w x-ms-request-charge
ramach klucza:
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'];
}
Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji Node.js przy użyciu konta usługi Azure Cosmos DB for NoSQL.
Używanie zestawu Python SDK
Container
Obiekt z zestawu SDK języka Python uwidacznia słownik, który mapuje last_response_headers
wszystkie nagłówki zwrócone przez podstawowy interfejs API HTTP dla ostatniej operacji wykonanej. Opłata za żądanie jest dostępna w x-ms-request-charge
ramach klucza:
new_item = {
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"partition_key": "61dba35b-4f02-45c5-b648-c6badc0cbd79",
"name": "Yamba Surfboard"
}
container.create_item(new_item)
request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]
existing_item = container.read_item(
item="aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
partition_key="61dba35b-4f02-45c5-b648-c6badc0cbd79"
)
request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]
Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji w języku Python przy użyciu konta usługi Azure Cosmos DB for NoSQL.
Następne kroki
Aby dowiedzieć się więcej na temat optymalizacji użycia jednostek RU, zobacz następujące artykuły:
- Jednostki żądania w usłudze Azure Cosmos DB
- Optymalizacja zaaprowizowanej przepływności w usłudze Azure Cosmos DB
- Optymalizacja kosztów zapytania w usłudze Azure Cosmos DB
- Globalnie skalowana aprowizowana przepływność
- Wprowadzenie do aprowizowanej przepływności w usłudze Azure Cosmos DB
- Aprowizowanie przepływności dla kontenera
- Monitorowanie i debugowanie za pomocą szczegółowych informacji w usłudze Azure Cosmos DB