ابحث عن رسوم وحدة الطلب للعمليات المنفذة في Azure Cosmos DB SQL API
ينطبق على:
واجهة برمجة تطبيقات SQL
تدعم قاعدة بيانات Azure Cosmos العديد من واجهات برمجة التطبيقات، مثل SQL وMongoDB وCassandra وGremlin وTable. كل واجهة من واجهات برمجة التطبيقات لديها مجموعة خاصة بها من عمليات قاعدة البيانات. تتراوح هذه العمليات من القراءة والكتابة النقطية البسيطة إلى الاستعلامات المعقدة. تستهلك كل عملية قاعدة بيانات موارد النظام استناداً إلى تعقيد العملية.
يتم تسوية تكلفة جميع عمليات قاعدة البيانات بواسطة Azure Cosmos DB ويتم التعبير عنها بواسطة Request Units (أو وحدات البحث السريع، باختصار). تكلفة الطلب هي وحدات الطلب التي تستهلكها جميع عمليات قاعدة البيانات الخاصة بك. يمكنك التفكير في وحدات الطلب على أنها عملة أداء تستخلص موارد النظام مثل CPU وIOPS والذاكرة المطلوبة لتنفيذ عمليات قاعدة البيانات التي يدعمها Azure Cosmos DB. بغض النظر عن واجهة برمجة التطبيقات التي تستخدمها للتفاعل مع حاوية Azure Cosmos، يتم دائماً قياس التكاليف عبر وحدات الطلب. سواء كانت عملية قاعدة البيانات عبارة عن كتابة أو قراءة نقطة أو استعلام، يتم دائماً قياس التكاليف بوحدات RUs. لمعرفة المزيد، راجع مقالة وحدات الطلب واعتباراتها.
تقدم هذه المقالة الطرق المختلفة التي يمكنك من خلالها العثور على استهلاك وحدة الطلب (RU) لأي عملية يتم تنفيذها على حاوية في Azure Cosmos DB SQL API. إذا كنت تستخدم واجهة برمجة تطبيقات مختلفة، فراجع مقالات API for MongoDBو Cassandra APIو Gremlin APIو Table API للعثور على رسوم RU / ثانية.
حالياً، يمكنك قياس هذا الاستهلاك فقط باستخدام مدخل Azure أو بفحص الاستجابة المرسلة من Azure Cosmos DB عبر إحدى حزم SDK. إذا كنت تستخدم واجهة برمجة تطبيقات SQL، فلديك خيارات متعددة للعثور على استهلاك RU لعملية مقابل حاوية Azure Cosmos.
استخدام مدخل Microsoft Azure
تسجيل الدخول إلى مدخل Azure.
إنشاء حساب Azure Cosmos جديد وتزويده بالبيانات، أو تحديد حساب Azure Cosmos الحالي الذي يحتوي على بيانات بالفعل.
انتقل إلى جزء Data Explorer، ثم حدد الحاوية التي تريد العمل عليها.
حدد New SQL Query.
أدخل استعلاماً صالحاً، ثم حدد Execute Query.
حدد Query Stats لعرض رسوم الطلب الفعلية للطلب الذي نفذته.
استخدم .NET عدة تطوير البرامج
تعرض الكائنات التي تم إرجاعها من .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();
});
لمزيد من المعلومات، راجع Quickstart: إنشاء تطبيق Java باستخدام حساب Azure Cosmos DB SQL API.
استخدم Node.js SDK
تعرض الكائنات التي تم إرجاعها من Node.js SDK كائناً فرعياً headers يقوم بتعيين جميع الرؤوس التي تم إرجاعها بواسطة واجهة برمجة تطبيقات HTTP الأساسية. رسوم الطلب متاحة تحت المفتاح 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'];
}
لمزيد من المعلومات، راجع Quickstart: إنشاء تطبيق Node.js باستخدام حساب Azure Cosmos DB SQL API.
استخدم Python SDK
يكشف الكائن CosmosClient من Python SDK عن قاموس last_response_headers يعيّن جميع الرؤوس التي تم إرجاعها بواسطة واجهة برمجة تطبيقات HTTP الأساسية لآخر عملية تم تنفيذها. رسوم الطلب متاحة تحت المفتاح x-ms-request-charge :
response = client.ReadItem(
'dbs/database/colls/container/docs/itemId', {'partitionKey': 'partitionKey'})
request_charge = client.last_response_headers['x-ms-request-charge']
response = client.ExecuteStoredProcedure(
'dbs/database/colls/container/sprocs/storedProcedureId', None, {'partitionKey': 'partitionKey'})
request_charge = client.last_response_headers['x-ms-request-charge']
لمزيد من المعلومات، راجع Quickstart: إنشاء تطبيق Python باستخدام حساب Azure Cosmos DB SQL API.
الخطوات التالية
لمعرفة المزيد حول تحسين استهلاك وحدة الطلب، راجع هذه المقالات:
- طلب الوحدات ومعدل النقل في Azure Cosmos DB
- تحسين تكلفة معدل النقل المتوفر في قاعدة بيانات Azure Cosmos
- تحسين تكلفة الاستعلام في Azure Cosmos DB
- إنتاجية يتم توفيرها على نطاق عالمي
- توفير معدل النقل في الحاويات وقواعد البيانات
- إنتاجية التوفير للحاوية
- المراقبة والتصحيح باستخدام المقاييس في Azure Cosmos DB