尋找 Azure Cosmos DB for NoSQL 作業的要求單位費用
適用於:NoSQL
Azure Cosmos DB 支援許多 API,例如 SQL、MongoDB、Cassandra、Gremlin 和資料表。 每個 API 都有它自己的一組資料庫作業。 這些作業的範圍可從簡單的點讀取和寫入到複雜查詢。 每個資料庫作業都會根據作業的複雜度來取用系統資源。
所有資料庫作業的成本會由 Azure Cosmos DB 進行正規化,並以要求單位 (RU) 表示。 要求費用是所有資料庫作業耗用的要求單位。 您可以將 RU 視為效能貨幣,抽象表示執行 Azure Cosmos DB 支援的資料庫作業時所需的系統資源,例如 CPU、IOPS 和記憶體。 無論您使用哪種 API 與容器互動,成本始終以 RU 計算。 無論資料庫作業是寫入、點讀取還是查詢,成本一律以 RU 為單位進行測量。 若要深入了解,請參閱 Azure Cosmos DB 中的要求單位。
本文將介紹不同的方法,供您尋找對 Azure Cosmos DB for NoSQL 中容器執行之任何作業所產生的要求單位 (RU) 使用量。 如果您正在使用其他 API,請參閱 API for MongoDB、API for Cassandra、API for Gremlin 和資料表 API。
目前,耗用量只能藉由使用 Azure 入口網站,或藉由查看 Azure Cosmos DB 經任一 SDK 所傳送的回應來測量。 如果您正在使用 API for NoSQL,您會有多個選項可用來尋找作業的要求費用。
使用 Azure 入口網站
登入 Azure 入口網站。
建立新的 Azure Cosmos DB 帳戶並為其提供資料,或選取已包含資料的現有 Azure Cosmos DB 帳戶。
前往 [資料總管] 窗格,然後選取您要處理的容器。
選取 [新增 SQL 查詢]。
輸入有效的查詢,然後選取 [執行查詢]。
選取下 [查詢統計資料],以顯示您執行的要求實際的要求費用。
使用 .NET SDK
從 .NET SDK v2 傳回的物件會公開 RequestCharge
屬性:
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
從 Java SDK 傳回的物件會公開 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();
});
如需詳細資訊,請參閱快速入門:使用 Azure Cosmos DB for NoSQL 帳戶建置 JAVA 應用程式。
使用 Node.js SDK
從 Java SDK 傳回的物件會公開 headers
子物件 (用以對應基礎 HTTP API 所傳回的所有標頭)。 要求費用會提供在 x-ms-request-charge
索引鍵下方:
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'];
}
如需詳細資訊,請參閱快速入門:使用 Azure Cosmos DB for NoSQL 帳戶建置 Node.js 應用程式。
使用 Python SDK
Python SDK 傳回的 Container
物件 會公開 last_response_headers
字典 (用以對應基礎 HTTP API 針對最後執行的作業傳回的所有標頭)。 要求費用會提供在 x-ms-request-charge
索引鍵下方:
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"]
如需詳細資訊,請參閱快速入門:使用 Azure Cosmos DB for NoSQL 帳戶建置 Python 應用程式。
下一步
若要了解如何最佳化您的 RU 耗用量,請參閱下列文章: