適用対象: NoSQL
優先度ベースの実行を使用すると、ユーザーは Azure Cosmos DB に送信される要求の優先度を指定できます。 構成済み RU/s (毎秒要求ユニット数) 内で処理できる容量を要求数が超える場合、Azure Cosmos DB では、低優先度の要求を抑え、高優先度の要求の実行を優先します。
この機能を使用すると、ユーザーは、最初に低優先度の要求に対する調整対策を実装することで、負荷の高いシナリオでコンテナーの合計消費量が構成済みの RU/秒を超えるときに、あまり重要ではないタスクを遅らせながら重要なタスクを実行することができます。 SDK を使用するすべてのクライアント アプリケーションでは、構成された再試行ポリシーに従って、低優先度の要求を再試行します。
注
優先度ベースの実行機能では必ずしも、高優先度の要求を優先して、低優先度のものを調整することは保証されません。 これはベスト エフォート ベースで動作し、SLA は機能のパフォーマンスにリンクされません。
ユース ケース
同じコンテナーで実行されているワークロードに対し、お使いのアプリケーションに異なる優先度が与えられているとき、優先度ベースの実行を使用できます。 たとえば、 にします。
- 読み取り、書き込み、またはクエリ操作の優先順位付け。
- 次のようなユーザー アクションとバックグラウンド操作の優先順位付け
- ストアド プロシージャ
- データ インジェスト/移行
作業の開始
優先度ベースの実行の使用を開始するには、Azure Cosmos DB アカウントの [機能] ページに移動します。 優先度ベースの実行 (プレビュー) 機能を選択して有効にします。
SDK の要件
- .NET v3: v3.33.0-preview 以降
- Java v4: v4.45.0 以降
- Spark 3.2: v4.19.0 以降
- JavaScript v4: v4.0.0 以降
- Python: v4.5.2b2 以降。 プレビュー バージョンでのみ利用できます。
コード サンプル
using Microsoft.Azure.Cosmos;
//update products catalog with low priority
RequestOptions catalogRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.Low};
PartitionKey pk = new PartitionKey(“productId1”);
ItemResponse<Product> catalogResponse = await this.container.CreateItemAsync<Product>(product1, pk, requestOptions);
//Display product information to user with high priority
RequestOptions getProductRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.High};
string id = “productId2”;
PartitionKey pk = new PartitionKey(id);
ItemResponse<Product> productResponse = await this.container.ReadItemAsync< Product>(id, pk, getProductRequestOptions);
優先度ベースの実行の監視
Azure portal で Azure Monitor メトリックを使用して、低および高優先度の要求の動作を監視できます。 メトリックについて詳しくは、「Azure Monitor のメトリック」をご覧ください。
Azure Cosmos DB アカウントの既定の優先度レベルを変更する
優先度ベースの実行が有効で、ユーザーによる要求に対して優先度レベルが指定されていない場合、そのようなすべての要求は高優先度で実行されます。 Azure CLI を使用して、Cosmos DB アカウントの要求の既定の優先度レベルを変更できます。
Azure CLI(Azure コマンドライン インターフェイス)
# install preview Azure CLI version 0.26.0 or later
az extension add --name cosmosdb-preview --version 0.26.0
# set subscription context
az account set -s $SubscriptionId
# Enable priority-based execution
az cosmosdb update --resource-group $ResourceGroup --name $AccountName --enable-priority-based-execution true
# change default priority level
az cosmosdb update --resource-group $ResourceGroup --name $AccountName --default-priority-level low
データ エクスプローラーの優先度
Cosmos DB アカウントに対して優先度ベースの実行が有効になっている場合、Azure portal のデータ エクスプローラー内のすべての要求が低優先度で実行されます。 これを調整するには、データ エクスプローラーの [設定] メニューで優先度の設定を変更します。
注
このクライアント側の構成は、関係するユーザーのデータ エクスプローラー ビューのみに固有であり、他のユーザーのデータ エクスプローラーの優先度レベルまたは Cosmos DB アカウントの既定の優先度レベルには影響しません。
制限事項
- 優先度ベース実行は、現在、サーバーレス データベース アカウントではサポートされていません。
- 優先度ベース実行機能の動作は、共有スループット データベース コンテナーでは非決定的です。
既知の問題
- 厳密で有界整合性制約の整合性レベルでは、読み取り要求の優先順位付けが効果的に機能しないことがあり、優先順位の高い読み取りトラフィックを無視して低優先度の書き込み要求が実行される可能性があります。