توضّح هذه الصفحة كيفية استرداد معلومات تنفيذ طلب البحث عند تنفيذ طلب بحث.
استخدام "شرح الطلب"
يمكنك استخدام "شرح طلب البحث" لفهم كيفية تنفيذ طلبات البحث. تقدّم هذه السمة تفاصيل يمكنك استخدامها لتحسين طلبات البحث.
يمكنك استخدام "شرح الاستعلام" في "وحدة تحكّم Firebase" باتّباع الخطوات التالية:
- في "وحدة تحكّم Firebase"، انتقِل إلى قواعد البيانات ومساحة التخزين > Firestore > البيانات > محرّر طلبات البحث.
- نفِّذ طلب البحث الذي تريد الحصول على معلومات تنفيذه.
- انقر على علامة التبويب شرح طلب البحث لعرض ناتج تحليل طلب البحث.
شرح أوضاع التشغيل
استنادًا إلى ما تريد تصحيح أخطائه، يمكنك تنفيذ طلب بحث باستخدام Query Explain في أوضاع مختلفة:
analyze: يخطّط للاستعلام وينفّذه. تعرض هذه الدالة معلومات حول أداة التخطيط وإحصاءات ومقاييس التنفيذ في وقت التشغيل، بالإضافة إلى النتائج العادية التي تنتجها طلب البحث.explain: يخطّط لطلب البحث، ولكن لا ينفّذه. تعرض هذه السمة معلومات أداة التخطيط، ولكن بدون إحصاءات أو مقاييس أو نتائج وقت التشغيل. ويكون ذلك مفيدًا لتصحيح أخطاء سلوك طلب بحث بدون تنفيذ عمليات مكلفة.
التحليل
يتضمّن ناتج Query 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
الخطوات التالية
- للتعرّف على عُقد شجرة التنفيذ، راجِع مرجع تنفيذ طلب البحث.
- للتعرّف على كيفية تحسين طلبات البحث، يمكنك الاطّلاع على تحسين تنفيذ طلبات البحث.