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