共用方式為


尋找 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 MongoDBAPI for CassandraAPI for Gremlin資料表 API

目前,耗用量只能藉由使用 Azure 入口網站,或藉由查看 Azure Cosmos DB 經任一 SDK 所傳送的回應來測量。 如果您正在使用 API for NoSQL,您會有多個選項可用來尋找作業的要求費用。

使用 Azure 入口網站

  1. 登入 Azure 入口網站

  2. 建立新的 Azure Cosmos DB 帳戶並為其提供資料,或選取已包含資料的現有 Azure Cosmos DB 帳戶。

  3. 前往 [資料總管] 窗格,然後選取您要處理的容器。

  4. 選取 [新增 SQL 查詢]

  5. 輸入有效的查詢,然後選取 [執行查詢]

  6. 選取下 [查詢統計資料],以顯示您執行的要求實際的要求費用。

    Azure 入口網站 中 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": "70b63682-b93a-4c77-aad2-65501347265f",
    "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="70b63682-b93a-4c77-aad2-65501347265f"
    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 耗用量,請參閱下列文章: