MongoDB 用 Azure Cosmos DB API で実行された操作の要求ユニット使用量を確認する

適用対象: MongoDB 用 Azure Cosmos DB API

Azure Cosmos DB では、多くの API (SQL、MongoDB、Cassandra、Gremlin、Table など) がサポートされています。 各 API には、固有のデータベース操作のセットがあります。 これらの操作の範囲は、単純なポイント読み取り/書き込みから、複雑なクエリにまで及びます。 各データベース操作は、それらの操作の複雑さに基づいて、システム リソースを消費します。

すべてのデータベース操作のコストは Azure Cosmos DB によって正規化され、要求ユニット (RU) によって表されます。 要求の料金は、すべてのデータベース操作で使用される要求ユニットです。 RU は、Azure Cosmos DB によってサポートされるデータベース操作を実行するために必要な CPU、IOPS、メモリなどのシステム リソースを抽象化する、パフォーマンスの通貨と考えることができます。 Azure Cosmos コンテナーの操作にどの API 使用するかに関係なく、コストは RU によって測定されます。 データベース操作が書き込み、ポイント読み取り、またはクエリのいずれの場合でも、コストは常に RU で測定されます。 詳細については、要求ユニットとその考慮事項に関する記事を参照してください。

この記事では、MongoDB 用 Azure Cosmos DB API でコンテナーに対して実行された任意の操作の要求ユニット (RU) 消費量を確認できる、さまざまな方法を紹介します。 異なる API を使用している場合は、SQL APICassandra APIGremlin APITable API に関する記事を参照して RU/秒の使用量を確認してください。

RU 使用量は、getLastRequestStatistics という名前のカスタム データベース コマンドによって公開されます。 最後に実行された操作の名前を含んだドキュメント、その要求の使用量、その実行時間が、このコマンドから返されます。 Azure Cosmos DB API for MongoDB を使用している場合、RU 使用量をいくつかの方法で取得できます。

Azure ポータルの使用

  1. Azure portal にサインインします。

  2. 新しい Azure Cosmos アカウントを作成してデータを取り込むか、既にデータが存在する既存のアカウントを選択します。

  3. [データ エクスプローラー] ウィンドウに進み、操作の対象となるコンテナーを選択します。

  4. コンテナー名の横にある [...] を選択し、 [新しいクエリ] を選択します。

  5. 有効なクエリを入力し、 [クエリの実行] を選択します。

  6. [Query Stats](クエリの統計) を選択すると、実行した要求の実際の使用量が表示されます。 このクエリ エディターでは、クエリ述語に対してのみ要求ユニットの課金を実行し、表示できます。 このエディターは、挿入ステートメントなどのデータ操作コマンドには使用できません。

    Screenshot of a MongoDB query request charge in the Azure portal

  7. データ操作コマンドの要求料金を取得するには、getLastRequestStatistics コマンドを Mongo シェル、Robo 3TMongoDB コンパス、シェル スクリプトを使用した Visual Studio Code 拡張機能などのシェル ベース UI から実行します。

    db.runCommand({getLastRequestStatistics: 1})

MongoDB ドライバーを使用する

公式の MongoDB .NET ドライバーを使用するとき、RunCommand メソッドを IMongoDatabase オブジェクトで呼び出すことでコマンドを実行できます。 このメソッドには、Command<> 抽象クラスの実装が必要となります。

class GetLastRequestStatisticsCommand : Command<Dictionary<string, object>>
{
    public override RenderedCommand<Dictionary<string, object>> Render(IBsonSerializerRegistry serializerRegistry)
    {
        return new RenderedCommand<Dictionary<string, object>>(new BsonDocument("getLastRequestStatistics", 1), serializerRegistry.GetSerializer<Dictionary<string, object>>());
    }
}

Dictionary<string, object> stats = database.RunCommand(new GetLastRequestStatisticsCommand());
double requestCharge = (double)stats["RequestCharge"];

詳細については、「クイック スタート: Azure Cosmos DB の MongoDB 用 API を使用して .NET Web アプリを構築する」を参照してください。

次のステップ

RU 使用量を最適化する方法については、次の記事をご覧ください。