এই পৃষ্ঠায় বর্ণনা করা হয়েছে, কীভাবে একটি কোয়েরি চালানোর সময় তার সম্পাদন সংক্রান্ত তথ্য পুনরুদ্ধার করতে হয়।
কোয়েরি এক্সপ্লেইন ব্যবহার করুন
আপনার কোয়েরিগুলো কীভাবে সম্পাদিত হচ্ছে তা বোঝার জন্য আপনি কোয়েরি এক্সপ্লেইন ব্যবহার করতে পারেন। এটি এমন সব বিবরণ প্রদান করে যা আপনি আপনার কোয়েরিগুলোকে অপ্টিমাইজ করতে ব্যবহার করতে পারেন।
আপনি গুগল ক্লাউড কনসোলের মাধ্যমে কোয়েরি এক্সপ্লেইন ব্যবহার করতে পারেন।
কনসোল
কোয়েরি এডিটর-এ একটি কোয়েরি চালান এবং এক্সপ্লানেশন ট্যাবটি খুলুন:
গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
- ডাটাবেসের তালিকা থেকে একটি Cloud Firestore ডাটাবেস নির্বাচন করুন। গুগল ক্লাউড কনসোল সেই ডাটাবেসের জন্য ফায়ারস্টোর এক্সপ্লোরার খুলে দেবে।
- কোয়েরি এডিটরে একটি কোয়েরি লিখুন এবং রান-এ ক্লিক করুন।
কোয়েরি বিশ্লেষণের আউটপুট দেখতে এক্সপ্লানেশন ট্যাবে ক্লিক করুন।
বিশ্লেষণ
কোয়েরি এক্সপ্লেইন-এর আউটপুটে দুটি প্রধান উপাদান থাকে—সামারি স্ট্যাটিস্টিকস এবং এক্সিকিউশন ট্রি। উদাহরণ হিসেবে এই কোয়েরিটি বিবেচনা করুন:
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
এরপর কী?
- এক্সিকিউশন ট্রি নোডগুলো সম্পর্কে জানতে, কোয়েরি এক্সিকিউশন রেফারেন্স দেখুন।
- আপনার কোয়েরিগুলো কীভাবে অপ্টিমাইজ করবেন তা জানতে, ‘কোয়েরি এক্সিকিউশন অপ্টিমাইজ করুন’ দেখুন।