تصف هذه الصفحة كيفية استرداد معلومات تنفيذ طلب البحث عند تنفيذه.
استخدام ميزة "توضيح طلب البحث"
يمكنك استخدام ميزة "توضيح طلب البحث" لفهم كيفية تنفيذ طلبات البحث. تقدّم هذه الميزة تفاصيل يمكنك استخدامها لـ تحسين طلبات البحث.
يمكنك استخدام ميزة "توضيح طلب البحث" في "وحدة تحكّم 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
الخطوات التالية
- للتعرّف على عُقد شجرة التنفيذ، يُرجى الاطّلاع على مرجع تنفيذ طلب البحث.
- للتعرّف على كيفية تحسين طلبات البحث، يُرجى الاطّلاع على مقالة تحسين تنفيذ طلب البحث.