এই পৃষ্ঠায় বর্ণনা করা হয়েছে, কীভাবে একটি কোয়েরি চালানোর সময় তার সম্পাদন সংক্রান্ত তথ্য পুনরুদ্ধার করতে হয়।
কোয়েরি এক্সপ্লেইন ব্যবহার করুন
আপনার কোয়েরিগুলো কীভাবে সম্পাদিত হচ্ছে তা বুঝতে কোয়েরি এক্সপ্লেইন ব্যবহার করুন। এটি এমন বিস্তারিত তথ্য প্রদান করে যা আপনি আপনার কোয়েরিগুলোকে অপ্টিমাইজ করতে ব্যবহার করতে পারেন।
আপনি Firebase কনসোলের মাধ্যমে অথবা Firestore সার্ভার ক্লায়েন্ট লাইব্রেরি ব্যবহার করে Query Explain ব্যবহার করতে পারেন।কনসোল
Firebase কনসোলে, Databases and Storage > Firestore > Data > Query Editor- এ যান।
- যে কোয়েরিটির এক্সিকিউশন তথ্য জানতে চান, সেটি চালান।
- কোয়েরি বিশ্লেষণের আউটপুট দেখতে কোয়েরি এক্সপ্লেইন ট্যাবে ক্লিক করুন।
নোড.জেএস (অ্যাডমিন)
import { field } from '@google-cloud/firestore/pipelines';
const q = db.pipeline() .collection('/users') .sort(field('status').ascending()) .limit(100); let results; try { results = await q.execute({ explainOptions: { mode: 'analyze', outputFormat: 'text' } }); } catch (error) { console.log(error); } const metrics = results?.explainStats?.text; console.log(metrics);
জাভা (অ্যাডমিন)
Pipeline q = db.pipeline() .collection("/users") .sort(field("status").ascending()) .limit(100); PipelineExecuteOptions pipelineOpts = new PipelineExecuteOptions().withExplainOptions( new ExplainOptions().withExecutionMode(ExplainOptions.ExecutionMode.ANALYZE) ); Pipeline.Snapshot result = q.execute(pipelineOpts).get(); String metrics = null; if (result.getExplainStats() != null) { metrics = result.getExplainStats().getText(); System.out.println(metrics); }
মোডগুলি ব্যাখ্যা করুন
আপনি কী ডিবাগ করতে চান তার উপর নির্ভর করে, Query Explain ব্যবহার করে বিভিন্ন মোডে একটি কোয়েরি চালাতে পারেন:
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
এরপর কী?
- এক্সিকিউশন ট্রি নোডগুলো সম্পর্কে জানতে, কোয়েরি এক্সিকিউশন রেফারেন্স দেখুন।
- আপনার কোয়েরিগুলো কীভাবে অপ্টিমাইজ করবেন তা জানতে, ‘কোয়েরি এক্সিকিউশন অপ্টিমাইজ করুন’ দেখুন।