Vyhledání poplatků za jednotku požadavku pro operace v rozhraní SQL API služby Azure Cosmos DB
PLATÍ PRO: ROZHRANÍ SQL API
Azure Cosmos DB podporuje mnoho rozhraní API, jako jsou SQL, MongoDB, Cassandra, Gremlin a Table. Každé rozhraní API má vlastní sadu databázových operací. Tyto operace se liší od čtení a zápisu jednoduchých bodů až po složité dotazy. Každá operace databáze využívá systémové prostředky na základě složitosti operace.
Náklady na všechny databázové operace jsou normalizovány službou Azure Cosmos DB a vyjadřuje se jednotkami žádostí (RU). Poplatky za požadavek jsou jednotky žádostí spotřebované všemi databázovými operacemi. Ru si můžete představit jako měnu výkonu, která abstrahuje systémové prostředky, jako je procesor, IOPS a paměť, které jsou potřeba k provádění databázových operací podporovaných službou Azure Cosmos DB. Bez ohledu na to, které rozhraní API používáte pro interakci s kontejnerem, se náklady vždy měří v RU. Bez ohledu na to, jestli je operace databáze zápis, čtení bodu nebo dotazu, se náklady vždy měří v ruách. Další informace najdete v tématu Jednotky žádostí ve službě Azure Cosmos DB.
Tento článek představuje různé způsoby, jak najít spotřebu jednotek požadavku pro jakoukoli operaci spuštěnou v kontejneru v rozhraní SQL API služby Azure Cosmos DB. Pokud používáte jiné rozhraní API, přečtěte si téma API pro MongoDB, Rozhraní API Cassandra, rozhraníGremlin API a rozhraní Table API.
V současné době můžete měřit spotřebu jenom pomocí webu Azure Portal nebo kontrolou odpovědi odeslané ze služby Azure Cosmos DB prostřednictvím jedné ze sad SDK. Pokud používáte rozhraní SQL API, máte několik možností pro vyhledání poplatku za žádost za operaci.
Použití webu Azure Portal
Přihlaste se k webu Azure Portal.
Vytvořte nový účet Azure Cosmos a nasílejte ho daty nebo vyberte existující účet Azure Cosmos, který už obsahuje data.
Přejděte do podokna Průzkumník dat a vyberte kontejner, na který chcete pracovat.
Vyberte Nový dotaz SQL.
Zadejte platný dotaz a pak vyberte Spustit dotaz.
Vyberte Statistiky dotazů, abyste zobrazili skutečné poplatky za požadavek, který jste provedli.
Použití sady .NET SDK
Objekty vrácené ze sady .NET SDK v2 zpřístupňují RequestCharge
vlastnost:
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;
}
Použití sady Java SDK
Objekty vrácené ze sady Java SDK zpřístupňují metodu 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();
});
Další informace najdete v tématu Rychlý start: Vytvoření aplikace v Javě pomocí účtu rozhraní SQL API služby Azure Cosmos DB.
Použití sady Node.js SDK
Objekty vrácené ze sadyNode.js SDK zpřístupňují headers
dílčí objekt, který mapuje všechny hlavičky vrácené podkladovým rozhraním HTTP API. Poplatek za žádost je k dispozici v rámci x-ms-request-charge
klíče:
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'];
}
Další informace najdete v tématu Rychlý start: Vytvoření aplikace Node.js pomocí účtu rozhraní SQL API služby Azure Cosmos DB.
Použití sady Python SDK
Objekt CosmosClient
ze sady Python SDK zveřejňuje slovník, který mapuje last_response_headers
všechny hlavičky vrácené podkladovým rozhraním HTTP API pro poslední spuštěnou operaci. Poplatek za žádost je k dispozici v rámci x-ms-request-charge
klíče:
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']
Další informace najdete v tématu Rychlý start: Vytvoření aplikace v Pythonu pomocí účtu rozhraní SQL API služby Azure Cosmos DB.
Další kroky
Informace o optimalizaci spotřeby RU najdete v těchto článcích:
- Jednotky žádostí ve službě Azure Cosmos DB
- Optimalizace nákladů na zřízenou propustnost ve službě Azure Cosmos DB
- Optimalizace nákladů na dotazování ve službě Azure Cosmos DB
- Globální škálování zřízené propustnosti
- Úvod do zřízené propustnosti ve službě Azure Cosmos DB
- Zřízení propustnosti pro kontejner
- Monitorování a ladění pomocí přehledů ve službě Azure Cosmos DB