इस पेज पर, क्वेरी को लागू करते समय क्वेरी के लागू होने की जानकारी पाने का तरीका बताया गया है.
क्वेरी की व्याख्या करने वाली सुविधा का इस्तेमाल करना
क्वेरी एक्सप्लेन का इस्तेमाल करके, यह समझा जा सकता है कि आपकी क्वेरी कैसे एक्ज़ीक्यूट की जा रही हैं. इससे ऐसी जानकारी मिलती है जिसका इस्तेमाल करके, अपनी क्वेरी को ऑप्टिमाइज़ किया जा सकता है.
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
आगे क्या करना है
- एक्ज़ीक्यूशन ट्री नोड के बारे में जानने के लिए, क्वेरी एक्ज़ीक्यूशन रेफ़रंस देखें.
- अपनी क्वेरी को ऑप्टिमाइज़ करने का तरीका जानने के लिए, क्वेरी को ऑप्टिमाइज़ करना लेख पढ़ें.