فهرسة المقاييس في Azure Cosmos DB

ينطبق على: NoSQL

توفر Azure Cosmos DB مقاييس فهرسة لعرض كل من المسارات المفهرسة المستخدمة والمسارات المفهرسة الموصى بها. يمكنك استخدام مقاييس الفهرسة لتحسين أداء الاستعلام، خاصة في الحالات التي لا تكون فيها متأكداً من كيفية تعديل نهج الفهرسة).

إصدارات SDK المعتمدة

يتم دعم مقاييس الفهرسة في إصدارات SDK التالية: | SDK | الإصدارات المدعومة | | --- | --- | | .NET SDK v3 | >= 3.21.0 | | Java SDK v4 | >= 4.19.0 | | Python SDK | >= 4.6.0 |

تمكين مقاييس الفهرسة

يمكنك تمكين مقاييس الفهرسة للاستعلام عن طريق ضبط إعدادات PopulateIndexMetrics بشكل مناسب على true. في حالة عدم التحديد، يتم ضبط PopulateIndexMetrics بشكل افتراضي على false. نوصي فقط بتمكين مقاييس الفهرس لاستكشاف أخطاء أداء الاستعلام وإصلاحها. طالما ظلت الاستعلامات ونهج الفهرسة كما هي، من غير المرجح تغيير مقاييس الفهرس. وبدلاً من ذلك، نوصي باستخدام سجلات التشخيص لتحديد الاستعلامات المكلفة عن طريق مراقبة تكلفة RU للاستعلام وزمن الانتقال.

    string sqlQueryText = "SELECT TOP 10 c.id FROM c WHERE c.Item = 'value1234' AND c.Price > 2";

    QueryDefinition query = new QueryDefinition(sqlQueryText);

    FeedIterator<Item> resultSetIterator = container.GetItemQueryIterator<Item>(
                query, requestOptions: new QueryRequestOptions
        {
            PopulateIndexMetrics = true
        });

    FeedResponse<Item> response = null;

    while (resultSetIterator.HasMoreResults)
        {
          response = await resultSetIterator.ReadNextAsync();
          Console.WriteLine(response.IndexMetrics);
        }

مثال على الإخراج

في مثال الاستعلام هذا، نلاحظ المسارات المستخدمة /Item/?و/Price/? والفهارس المركبة المحتملة (/Item ASC, /Price ASC).

Index Utilization Information
  Utilized Single Indexes
    Index Spec: /Item/?
    Index Impact Score: High
    ---
    Index Spec: /Price/?
    Index Impact Score: High
    ---
  Potential Single Indexes
  Utilized Composite Indexes
  Potential Composite Indexes
    Index Spec: /Item ASC, /Price ASC
    Index Impact Score: High
    ---

المسارات المفهرسة المستخدمة

توضح الفهارس الفردية المستخدمة والفهارس المركبة المستخدمة على التوالي المسارات المضمنة والفهارس المركبة التي استخدمها الاستعلام. قد تستخدم الاستعلامات مسارات مفهرسة متعددة، بالإضافة إلى مزيج من المسارات المضمنة والفهارس المركبة. إذا لم يتم سرد مسار مفهرس على أنه مستخدم، فلن تؤثر إزالة المسار المفهرس على أداء الاستعلام.

يجب الأخذ في عين الاعتبار قائمة المسارات المفهرسة المستخدمة كدليل على أن أحد الاستعلامات يستخدم هذه المسارات. إذا لم تكن متأكداً مما إذا كان سيؤدي أحد المسارات المفهرسة الجديدة إلى تحسين أداء الاستعلام، فيجب محاولة إضافة المسارات المفهرسة الجديدة والتحقق مما إذا كان الاستعلام يستخدمها أم لا.

المسارات المفهرسة المحتملة

تعرض الفهارس الفردية المحتملة والفهارس المركبة المحتملة على التوالي المسارات المضمنة والفهارس المركبة التي قد يستخدمها الاستعلام إذا تمت إضافتها. إذا كانت لديك مسارات مفهرسة محتملة، فيجب عليك إضافتها إلى نهج الفهرسة وملاحظة ما إذا كانت ستعمل على تحسين أداء الاستعلام.

خذ بعين الاعتبار قائمة المسارات المفهرسة المحتملة بمثابة توصيات وليست دليل قاطع على أن استعلام سيستخدم مسار مفهرس معين. المسارات المفهرسة المحتملة ليست قائمة شاملة من المسارات المفهرسة التي يمكن أن يستخدمها الاستعلام. وبالإضافة إلى ذلك، من الممكن ألا يكون للمسارات المفهرسة المحتملة أي تأثير على أداء الاستعلام. أضف المسارات المفهرسة الموصى بها وتأكد من أنها ستحسن أداء الاستعلام.

إشعار

هل لديك أي ملاحظات حول مقاييس الفهرسة؟ نريد أن نسمعه! لا تتردد في مشاركة التعليقات مباشرةً مع الفريق الهندسي لـ Azure Cosmos DB:cosmosdbindexing@microsoft.com

درجة تأثير الفهرس

تكمن درجة تأثير الفهرس في احتمالية أن يكون لأحد المسارات المفهرسة تأثير كبير على أداء الاستعلام بناءً على شكل الاستعلام. وبعبارة أخرى، تكمن درجة تأثير الفهرس في احتمالية أن تكون تكلفة RU للاستعلام أعلى بكثير بدون هذا المسار المفهرس المحدد.

هناك نوعان من درجات تأثير الفهرس المحتملة: عالية ومنخفضة. إذا كانت لديك مسارات مفهرسة محتملة متعددة، نوصي بالتركيز على المسارات المفهرسة ذات درجة تأثير عالية.

المعيار الوحيد المستخدم في درجة تأثير الفهرس هو شكل الاستعلام. على سبيل المثال، في الاستعلام الوارد أدناه، سيتم تعيين المسار المفهرس /name/? على درجة تأثير فهرس عالية:

SELECT * 
FROM c
WHERE c.name = "Samer"

يعتمد التأثير الفعلي على طبيعة البيانات. إذا تطابقت بعض العناصر مع /nameعامل التصفية، فسيحسن المسار المفهرس تكلفة RU للاستعلام بشكل كبير. ومع ذلك، إذا انتهى الأمر بمعظم العناصر إلى مطابقة عامل التصفية /name على أي حال، فقد لا يؤدي المسار المفهرس إلى تحسين أداء الاستعلام. وفي كل من هذه الحالات، سيتم تعيين المسار المفهرس /name/? على درجة تأثير فهرس عالية لأن المسار المفهرس يتمتع باحتمالية كبيرة لتحسين أداء الاستعلام بناء على شكل الاستعلام.

أمثلة إضافية

مثال الاستعلام

SELECT c.id 
FROM c 
WHERE c.name = 'Tim' AND c.age > 15 AND c.town = 'Redmond' AND c.timestamp > 2349230183

قياسات الفهرس

Index Utilization Information
  Utilized Single Indexes
    Index Spec: /name/?
    Index Impact Score: High
    ---
    Index Spec: /age/?
    Index Impact Score: High
    ---
    Index Spec: /town/?
    Index Impact Score: High
    ---
    Index Spec: /timestamp/?
    Index Impact Score: High
    ---
  Potential Single Indexes
  Utilized Composite Indexes
  Potential Composite Indexes
    Index Spec: /name ASC, /town ASC, /age ASC
    Index Impact Score: High
    ---
    Index Spec: /name ASC, /town ASC, /timestamp ASC
    Index Impact Score: High
    ---

توضح مقاييس الفهرس هذه أن الاستعلام استخدم المسارات المفهرسة /name/?، و/age/?، و/town/?، و/timestamp/?. تشير قياسات الفهرس أيضاً إلى أن هناك احتمالاً كبيراً بأن تؤدي إضافة الفهارس المركبة (/name ASC, /town ASC, /age ASC) و(/name ASC, /town ASC, /timestamp ASC) إلى تحسين الأداء بشكل أكبر.

الخطوات التالية

اقرأ المزيد حول الفهرسة في المقالات التالية: