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