ينطبق ذلك على إصدار Cloud Firestore Enterprise فقط. |
توضّح هذه الصفحة كيفية استرداد معلومات تنفيذ طلب البحث عند تنفيذ طلب بحث.
استخدام "شرح الطلب"
يمكنك استخدام Query Explain لفهم كيفية تنفيذ طلبات البحث. يقدّم هذا القسم تفاصيل يمكنك استخدامها من أجل تحسين طلبات البحث.
يمكنك استخدام "شرح الاستعلام" من خلال وحدة تحكّم Google Cloud أو الأمر explain
.
وحدة التحكم
نفِّذ طلب بحث في "محرّر طلبات البحث" وافتح علامة التبويب شرح:
-
في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
- من قائمة قواعد البيانات، اختَر قاعدة بيانات Cloud Firestore متوافقة مع MongoDB. تفتح "وحدة تحكّم Google Cloud" مستكشف Firestore لقاعدة البيانات هذه.
- أدخِل طلب بحث في محرِّر طلب البحث وانقر على تنفيذ.
-
انقر على علامة التبويب التفسير لعرض ناتج تحليل طلب البحث.
MongoDB API
تتوفّر ميزة "شرح الاستعلام" في MongoDB API من خلال الأمر
explain
الذي يمكنك استخدامه في أدوات مثل Mongo Shell وCompass.
يتوافق الأمر explain
مع الأوامر aggregate
وfind
وdistinct
وcount
، على سبيل المثال:
db.collection.explain.find(...)
يمكنك أيضًا استخدام طريقة explain()
، على سبيل المثال:
db.collection.find({QUERY}).explain()
القيود
يُرجى ملاحظة القيود والاختلافات التالية:-
لا تتيح ميزة "شرح الطلب" استخدام الأوامر التي تعرض مؤشرًا. على سبيل المثال، لا يمكن استدعاء explain من خلال تنفيذ الأمر التالي مباشرةً:
db.collection.aggregate(..., explain: true)
لا تتوافق ميزة "شرح الاستعلام" إلا مع الأوامر
find
وaggregate
وcount
وdistinct
.-
لا تتوفّر الخيارات
Verbosity
وComment
من Query Explain من خلال واجهة MongoDB API. يتطابق السلوك مع الخيارexecutionStats
. سيتم تجاهل الخيارَينallPlansExecution
وqueryPlanner
في حال توفّرهما.
التحليل
يحتوي ناتج Query Explain على مكوّنين رئيسيَّين، هما "الإحصاءات الموجزة" و"شجرة التنفيذ". لِنأخذ الاستعلام التالي كمثال:
db.order.aggregate(
[
{ "$match": { "user_id": 1234 } },
{ "$sort": { "date_placed": 1 } }
]
)
الإحصاءات الموجزة
يحتوي الجزء العلوي من الناتج الذي تمّت فيه عملية الشرح على ملخّص لإحصاءات التنفيذ. استخدِم هذه الإحصاءات لتحديد ما إذا كان طلب البحث يتضمّن وقت استجابة أو تكلفة مرتفعَين. وتتضمّن أيضًا إحصاءات الذاكرة التي تتيح لك معرفة مدى اقتراب طلب البحث من حدود الذاكرة.
Billing Metrics:
read units: 1
Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1
شجرة التنفيذ
يصف شجرة التنفيذ تنفيذ طلب البحث كسلسلة من العُقد. تسترجع العُقد الطرفية البيانات من طبقة التخزين التي تتنقّل صعودًا في الشجرة لإنشاء ردّ على طلب البحث.
للحصول على تفاصيل حول كل عقدة تنفيذ، يُرجى الرجوع إلى مرجع التنفيذ.
للحصول على تفاصيل حول كيفية استخدام هذه المعلومات لتحسين طلبات البحث، راجِع تحسين تنفيذ طلب البحث.
في ما يلي مثال على شجرة التنفيذ:
• Compute
| $out_1: map_set($record_1, "__id__", $__id___1, "__key__", $__key___1, "__row_id__", $__row_id___1, "__$0__", $__$0___2)
| is query result: true
|
| Execution:
| records returned: 1
|
└── • Compute
| $__$0___2: UNSET
|
| Execution:
| records returned: 1
|
└── • Compute
| $__key___1: UNSET
| $__row_id___1: UNSET
|
| Execution:
| records returned: 1
|
└── • Compute
| $__id___1: _id($record_1.__key__)
|
| Execution:
| records returned: 1
|
└── • MajorSort
| fields: [$v_5 ASC]
| output: [$record_1]
|
| Execution:
| records returned: 1
| peak memory usage: 4.00 KiB (4,096 B)
|
└── • Compute
| $v_5: array_get($v_4, 0L)
|
| Execution:
| records returned: 1
|
└── • Compute
| $v_4: sortPaths(array($record_1.date_placed), [date_placed ASC])
|
| Execution:
| records returned: 1
|
└── • Filter
| expression: $eq($user_id_1, 1,234)
|
| Execution:
| records returned: 1
|
└── • TableScan
source: **/my_collection
order: STABLE
properties: * - { __create_time__, __update_time__ }
output record: $record_1
output bindings: {$user_id_1=user_id}
variables: [$record_1, $user_id_1]
Execution:
records returned: 1
records scanned: 1
الخطوات التالية
- للتعرّف على عُقد شجرة التنفيذ، اطّلِع على مرجع تنفيذ طلب البحث.
- للتعرّف على كيفية تحسين طلبات البحث، يمكنك الاطّلاع على تحسين تنفيذ طلبات البحث.