MongoDB-এ explain() ব্যবহার করে কোয়ারি প্ল্যান ও এক্সিকিউশন স্ট্যাটস বিশ্লেষণ
explain("executionStats") মোডে কোয়ারি কীভাবে এক্সিকিউট হয়েছে (ইন্ডেক্স ব্যবহার হলো কিনা, কত ডকুমেন্ট স্ক্যান হলো, কতক্ষণ লাগলো) বিস্তারিত দেখা যায়। এটি কোয়ারি অপ্টিমাইজেশনের জন্য অপরিহার্য।
উদাহরণ: ডেটা ইনসার্ট
> db.demo157.insertOne({"Status":"Active"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e354fdffdf09dd6d08539fc") }
> db.demo157.insertOne({"Status":"InActive"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e354fe3fdf09dd6d08539fd") }
সব ডকুমেন্ট দেখানো
> db.demo157.find();
আউটপুট:
{ "_id" : ObjectId("5e354fdffdf09dd6d08539fc"), "Status" : "Active" }
{ "_id" : ObjectId("5e354fe3fdf09dd6d08539fd"), "Status" : "InActive" }
explain("executionStats") কোয়ারি
> db.demo157.find({Status: { $in: ['Active','InActive'] }}).explain("executionStats");
আউটপুট (সংক্ষিপ্ত):
{
"queryPlanner": {
"winningPlan": { "stage": "COLLSCAN", "filter": { "Status": { "$in": ["Active", "InActive"] } } }
},
"executionStats": {
"executionSuccess": true,
"nReturned": 2,
"executionTimeMillis": 18,
"totalDocsExamined": 2,
"executionStages": { "stage": "COLLSCAN", "nReturned": 2, "docsExamined": 2 }
},
"serverInfo": { "host": "DESKTOP-QN2RB3H", "port": 27017, "version": "4.0.5" },
"ok": 1
}
ব্যাখ্যা
- winningPlan.stage: "COLLSCAN" — কালেকশন স্ক্যান (ফুল স্ক্যান) হয়েছে, ইন্ডেক্স ব্যবহার হয়নি।
- totalDocsExamined: 2 — ২টি ডকুমেন্ট পড়তে হয়েছে।
- executionTimeMillis: 18 — এক্সিকিউশন টাইম।
- যদি
Statusফিল্ডে ইন্ডেক্স থাকত, তবেIXSCANদেখতাম।
মোডগুলো: queryPlanner (ডিফল্ট, শুধু প্ল্যান), executionStats (রান করে স্ট্যাটস), allPlansExecution (সকল প্ল্যান রান করে)।
টিপস: totalKeysExamined: 0 হলে ইন্ডেক্স ব্যবহার হয়নি। ইন্ডেক্স তৈরি করুন।