توضّح هذه الصفحة كيفية استرداد معلومات تنفيذ طلب البحث عند تنفيذ طلب بحث.
استخدام "شرح طلب البحث"
يمكنك استخدام "شرح طلب البحث" لفهم كيفية تنفيذ طلبات البحث. تقدّم هذه الصفحة تفاصيل يمكنك استخدامها من أجل تحسين طلبات البحث.
يمكنك استخدام "شرح الاستعلام" من خلال وحدة تحكّم Google Cloud أو الأمر explain.
وحدة التحكم
نفِّذ طلب بحث في "محرّر طلبات البحث" وافتح علامة التبويب شرح:
-
في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
- من قائمة قواعد البيانات، اختَر قاعدة بيانات Cloud Firestore. تفتح وحدة تحكّم Google Cloud مستكشف Firestore لقاعدة البيانات هذه.
- أدخِل طلب بحث في محرِّر طلب البحث وانقر على تنفيذ.
-
انقر على علامة التبويب التفسير لعرض نتائج تحليل طلب البحث.
MongoDB API
تتوفّر ميزة "شرح الاستعلام" في واجهة برمجة التطبيقات MongoDB API من خلال الأمر
explain
الذي يمكنك استخدامه في أدوات مثل Mongo Shell وCompass.
يتوافق الأمر explain مع الأوامر aggregate وfind وdistinct وcount، على سبيل المثال:
db.collection.explain('executionStats').find(...)
يمكنك أيضًا استخدام طريقة explain()، على سبيل المثال:
db.collection.find({QUERY}).explain('executionStats')القيود
يُرجى مراعاة القيود والاختلافات التالية:-
لا تتيح ميزة "شرح الطلب" استخدام الأوامر التي تعرض مؤشرًا. على سبيل المثال، لا يمكن استدعاء explain من خلال تنفيذ الأمر التالي مباشرةً:
db.collection.aggregate(..., explain: true)
لا تتوافق ميزة "شرح الاستعلام" إلا مع الأوامر
findوaggregateوcountوdistinctوupdateوdeleteوfindAndModify.-
تتيح ميزة "شرح الاستعلام" أوضاع الإسهاب
executionStatsوallPlansExecutionوqueryPlanner.queryPlanner: لعرض خطة التنفيذ فقط، بدون تنفيذ طلب البحث،-
executionStatsوallPlansExecution: تعرض خطة التنفيذ مع إحصاءات الفوترة والذاكرة والتنفيذ.
إذا لم يتم تحديد وضع الإسهاب، سيتم ضبط وضع الإسهاب تلقائيًا على
queryPlanner. للاطّلاع على إحصاءات التنفيذ الكاملة، يجب تحديد وضع الإسهابexecutionStatsأوallPlansExecution.
التحليل
يتضمّن ناتج Query Explain مكوّنَين رئيسيَّين، وهما "إحصاءات الملخّص" و"شجرة التنفيذ". لِنأخذ الاستعلام التالي كمثال:
db.orders.aggregate(
[
{ "$match": { "user_id": 1234 } },
{ "$sort": { "date_placed": 1 } }
]
)
الإحصاءات الملخّصة
يحتوي الجزء العلوي من الناتج المُفسَّر على ملخّص لإحصاءات التنفيذ. استخدِم هذه الإحصاءات لتحديد ما إذا كان طلب البحث يتضمّن وقت استجابة أو تكلفة مرتفعَين. وتتضمّن أيضًا إحصاءات الذاكرة التي تتيح لك معرفة مدى اقتراب طلب البحث من حدود الذاكرة.
Execution:
results returned: 35
query id: 7e7b37ea1a259d79
request peak memory usage: 45.56 KiB (46,656 B)
data bytes read: 24.58 KiB (25,175 B)
entity row scanned: 265
Billing:
read units: 7
شجرة التنفيذ
يصف شجرة التنفيذ تنفيذ طلب البحث كسلسلة من العُقد. تسترجع العُقد السفلية (عُقد الأوراق) البيانات من طبقة التخزين التي تنتقل إلى أعلى الشجرة لإنشاء رد على طلب البحث.
للحصول على تفاصيل حول كل عقدة تنفيذ، يُرجى الرجوع إلى مرجع التنفيذ.
للحصول على تفاصيل حول كيفية استخدام هذه المعلومات لتحسين طلبات البحث، راجِع تحسين تنفيذ طلب البحث.
في ما يلي مثال على شجرة تنفيذ:
Execution:
results returned: 35
query id: 7e7b37ea1a259d79
request peak memory usage: 45.56 KiB (46,656 B)
data bytes read: 24.58 KiB (25,175 B)
entity row scanned: 265
Billing:
read units: 7
Tree:
• Compute
| $out_1: map_set($record_1, "__id__", $__id___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 35
| latency: 204.87 ms (local 7.64 ms)
|
└── • Compute
| $__id___1: _id($__key___2)
|
| Execution:
| records returned: 35
| latency: 197.23 ms (local 2.04 ms)
|
└── • MajorSort
| fields: [$v_5 ASC]
| output: [$__key___2, $record_1]
|
| Execution:
| records returned: 35
| latency: 195.20 ms (local 28.42 ms)
| peak memory usage: 45.56 KiB (46,656 B)
|
└── • Compute
| $v_5: offset($v_4, 0L)
|
| Execution:
| records returned: 35
| latency: 166.78 ms (local 14.84 ms)
|
└── • Compute
| $v_4: sortPaths(array($date_placed_1), [date_placed ASC])
|
| Execution:
| records returned: 35
| latency: 151.94 ms (local 5.43 ms)
|
└── • TableScan
source: **/orders
order: STABLE
filter: $eq($user_id_1, 1,234)
output bindings: {$__key___2=row().__key__, $date_placed_1=row().date_placed, $record_1=row[* - { __create_time__, __update_time__ }](), $user_id_1=row().user_id}
output: [$__key___2, $date_placed_1, $record_1]
Execution:
records returned: 35
latency: 146.50 ms
data bytes returned: 3.25 KiB (3,325 B)
post-filtered rows: 230
records scanned: 265
data bytes read: 24.58 KiB (25,175 B)
الخطوات التالية
- للتعرّف على عُقد شجرة التنفيذ، راجِع مرجع تنفيذ طلب البحث.
- للتعرّف على كيفية تحسين طلبات البحث، يمكنك الاطّلاع على تحسين تنفيذ طلبات البحث.