Encontre a taxa de unidade de solicitação para operações no Azure Cosmos DB para NoSQL
APLICA-SE A: NoSQL
O Azure Cosmos DB dá suporte a muitas APIs, como SQL, MongoDB, Cassandra, Gremlin e Table. Cada API tem seu próprio conjunto de operações de banco de dados. Essas operações variam de simples leituras e gravações pontuais a consultas complexas. Cada operação de banco de dados consome recursos do sistema com base na complexidade da operação.
O custo de todas as operações de banco de dados é normalizado pelo Azure Cosmos DB e é expresso por unidades de solicitação (RU). A taxa de solicitação é a unidade de solicitação consumida por todas as operações do banco de dados. Você pode pensar em RUs como uma moeda de desempenho abstraindo os recursos do sistema, como CPU, IOPS e memória, necessários para executar as operações de banco de dados com suporte do Azure Cosmos DB. Não importa qual API você use para interagir com seu contêiner, os custos são sempre medidos em RUs. Seja a operação da base de dados de escrita, de leitura de ponto ou de consulta, os custos são sempre medidos em RU. Para saber mais, consulte Unidades de solicitação no Azure Cosmos DB.
Este artigo apresenta as diferentes maneiras de encontrar o consumo de unidade de solicitação para qualquer operação executada em um contêiner no Azure Cosmos DB para NoSQL. Se você estiver usando uma API diferente, consulte API para MongoDB, API para Cassandra, API para Gremlin e API para Tabela.
Atualmente, você pode medir o consumo somente usando o portal do Azure ou inspecionando a resposta enviada do Azure Cosmos DB por meio de um dos SDKs. Se você estiver usando a API para NoSQL, terá várias opções para encontrar a taxa de solicitação para uma operação.
Utilizar o portal do Azure
Inicie sessão no portal do Azure.
Crie uma nova conta do Azure Cosmos DB e alimente-a com dados ou selecione uma conta existente do Azure Cosmos DB que já contenha dados.
Vá para o painel Data Explorer e selecione o contêiner no qual deseja trabalhar.
Selecione Nova Consulta SQL.
Insira uma consulta válida e selecione Executar consulta.
Selecione Estatísticas de consulta para exibir a cobrança de solicitação real para a solicitação executada.
Utilizar o .NET SDK
Os objetos retornados do SDK do .NET v2 expõem uma RequestCharge
propriedade:
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;
}
Usar o Java SDK
Os objetos retornados do Java SDK expõem um getRequestCharge()
método:
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();
});
Para obter mais informações, consulte Guia de início rápido: criar um aplicativo Java usando uma conta do Azure Cosmos DB para NoSQL.
Usar o SDK do Node.js
Os objetos retornados do SDK do Node.js expõem um headers
subobjeto que mapeia todos os cabeçalhos retornados pela API HTTP subjacente. A taxa de solicitação está disponível sob a x-ms-request-charge
chave:
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'];
}
Para obter mais informações, consulte Guia de início rápido: criar um aplicativo Node.js usando uma conta do Azure Cosmos DB para NoSQL.
Utilizar o SDK Python
O Container
objeto do Python SDK expõe um last_response_headers
dicionário que mapeia todos os cabeçalhos retornados pela API HTTP subjacente para a última operação executada. A taxa de solicitação está disponível sob a x-ms-request-charge
chave:
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"]
Para obter mais informações, consulte Guia de início rápido: criar um aplicativo Python usando uma conta do Azure Cosmos DB para NoSQL.
Próximos passos
Para saber mais sobre como otimizar seu consumo de RU, consulte estes artigos:
- Unidades de Pedido no Azure Cosmos DB
- Otimizar o débito aprovisionado no Azure Cosmos DB
- Otimizar o custo das consultas no Azure Cosmos DB
- Dimensione globalmente a taxa de transferência provisionada
- Introdução à taxa de transferência provisionada no Azure Cosmos DB
- Taxa de transferência de provisionamento para um contêiner
- Monitorizar e depurar com informações no Azure Cosmos DB