تحليل تنفيذ طلب البحث باستخدام Query Explain

توضّح هذه الصفحة كيفية استرداد معلومات تنفيذ طلب البحث عند تنفيذه.

استخدام ميزة "توضيح طلب البحث"

يمكنك استخدام ميزة "توضيح طلب البحث" لفهم كيفية تنفيذ طلبات البحث. تقدّم هذه الميزة تفاصيل يمكنك استخدامها لـ تحسين طلبات البحث.

يمكنك استخدام ميزة "توضيح طلب البحث" في "وحدة تحكّم Firebase":

  • في "وحدة تحكّم Firebase"، انتقِل إلى قواعد البيانات والتخزين > Firestore > البيانات > محرِّر طلبات البحث.
  • نفِّذ طلب البحث الذي تريد الحصول على معلومات تنفيذه.
  • انقر على علامة التبويب توضيح طلب البحث لعرض ناتج تحليل طلب البحث.

أوضاع ميزة "توضيح طلب البحث"

اعتمادًا على ما تريد تصحيح أخطائه، يمكنك تنفيذ طلب بحث باستخدام ميزة "توضيح طلب البحث" بأوضاع مختلفة:

  • analyze: تخطّط طلب البحث وتنفّذه. تعرض هذه الميزة معلومات المخطِّط وإحصاءات التنفيذ في وقت التشغيل والمقاييس، بالإضافة إلى النتائج العادية التي يعرضها طلب البحث.

  • explain: تخطّط طلب البحث، ولكن لا تنفّذه. تعرض هذه الميزة معلومات المخطِّط ولكن لا تعرض إحصاءات أو مقاييس أو نتائج وقت التشغيل. هذه الميزة مفيدة لتصحيح أخطاء سلوك طلب البحث بدون تنفيذ عمليات مكلفة.

التحليل

يحتوي ناتج ميزة "توضيح طلب البحث" على مكوّنَين رئيسيَّين، هما "الإحصاءات التلخيصية" و"شجرة التنفيذ". لنأخذ طلب البحث هذا كمثال:

db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)

الإحصاءات التلخيصية

يحتوي الجزء العلوي من الناتج الموضَّح على ملخّص لإحصاءات التنفيذ. استخدِم هذه الإحصاءات لتحديد ما إذا كان طلب البحث يتضمّن وقت استجابة أو تكلفة مرتفعَين. يحتوي هذا الجزء أيضًا على إحصاءات الذاكرة التي تتيح لك معرفة مدى اقتراب طلب البحث من الحدود القصوى للذاكرة.

Execution:
 results returned: 2
 request peak memory usage: 20.25 KiB (20,736 B)
 data bytes read: 148 B
 entity row scanned: 2

Billing:
 read units: 1

شجرة التنفيذ

تصف شجرة التنفيذ عملية تنفيذ طلب البحث كسلسلة من العُقد. تسترد العُقد السفلية (العُقد الورقية) البيانات من طبقة التخزين التي تنتقل لأعلى الشجرة لإنشاء استجابة لطلب البحث.

للحصول على تفاصيل عن كل عُقدة تنفيذ، يُرجى الرجوع إلى مرجع التنفيذ.

للحصول على تفاصيل حول كيفية استخدام هذه المعلومات لتحسين طلبات البحث، يُرجى الاطّلاع على مقالة تحسين تنفيذ طلب البحث.

في ما يلي مثال على شجرة تنفيذ:

Tree:
• Compute
|  $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
|  is query result: true
|
|  Execution:
|   records returned: 2
|   latency: 5.96 ms (local <1 ms)
|
└── • Compute
    |  $__name___1: map_get($record_1, "__key__")
    |
    |  Execution:
    |   records returned: 2
    |   latency: 5.88 ms (local <1 ms)
    |
    └── • MajorSort
        |  fields: [$v_1 ASC]
        |  output: [$record_1]
        |  limit: 100
        |
        |  Execution:
        |   records returned: 2
        |   latency: 5.86 ms (local <1 ms)
        |   peak memory usage: 20.25 KiB (20,736 B)
        |
        └── • Compute
            |  $v_1: map_get($record_1, "status")
            |
            |  Execution:
            |   records returned: 2
            |   latency: 5.23 ms (local <1 ms)
            |
            └── • TableScan
                   source: /users
                   order: UNDEFINED
                   properties: *
                   row range: (-∞..+∞)
                   output record: $record_1
                   variables: [$record_1]

                   Execution:
                    records returned: 2
                    latency: 4.68 ms
                    records scanned: 2
                    data bytes read: 148 B

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