اس باب میں مانگو ڈی بی کی کوئری کارروائی کا تجزیہ شامل ہے، اسی طرح جیسے SQL کا explain ہوتا ہے، مانگو ڈی بی بھی کوئری انتہائی کارروائی کے لئے explain کی حمایت کرتا ہے۔
بنیادی استعمال
explain فنکشن کو بلانے سے، آپ تجزیہ کے نتائج حاصل کر سکتے ہیں
// فنکشن کی find میں تجزیے کے نتائج
db.collection.find({}).explain();
// فنکشن کی aggregate میں تجزیے کے نتائج
db.collection.explain().aggregate([]);
explain کے تین موڈز ہوتے ہیں:
- queryPlanner (پہلے سے موجود)
- executionStats
- allPlansExecution
تفصیل:
- queryPlanner کا استعمال صرف تمام ممکنہ تجربات کے منصوبے درج کرتا ہے، اصل بیان نہیں کرتا، اور جیتنے والے منصوبے کو جیتنے والے منصوبہ پلان کے روپ میں پیش کرتا ہے۔
- executionStats کا استعمال صرف جیتنے والے منصوبے کو انجام دیتا ہے اور نتائج کو پیش کرتا ہے۔
- allPlansExecution کا استعمال تمام منصوبوں کو انجام دیتا ہے اور نتائج کو پیش کرتا ہے۔
مختلف موڈز کا استعمال
// executionStats موڈ، صرف explain فنکشن کو پیرامیٹرز کو منتقل کریں
db.collection.find({}).explain('executionStats');
// allPlansExecution موڈ
db.collection.find({}).explain('allPlansExecution');
explain مواد کی وضاحت
queryPlanner مواد
ذیل میں دیا گیا مواد explain کی طرف سے واپس کروایا جاتا ہے، غیر کلیدی معلومات کو نظرانداز کرتے ہوئے
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "test.orders",
"indexFilterSet" : false, // کلیدی میٹرک، کیا انڈیکس فلٹرنگ ڈیٹا کا استعمال ہو رہا ہے
"winningPlan" : {
"stage" : "COLLSCAN", // کلیدی میٹرک، مرحلے کا نام. ہر مرحلے کے خصوصی معلومات ہوتی ہیں، مثال کے طور پر، COLLSCAN مکمل کیلکشن کو اسکین کرنا کو ظاہر کرتا ہے
"direction" : "forward"
},
"rejectedPlans" : [ ]
}
...
}
مرحلے کی قسمیں مندرجہ ذیل ہوتی ہیں:
- COLLSCAN: پوری ٹیبل اسکین
- IXSCAN: انڈیکس اسکین
- FETCH: انڈیکس کے بنیاد پر مخصوص دستاویزات حاصل کریں
- SHARD_MERGE: ہر شارڈ کی طرف سے واپسی ہونے والے ڈیٹا کو مرج کرنا
- SORT: میموری میں ترتیب دینا کا تشہیر ہے
- LIMIT: واپسی کی تعداد محدود کریں
- SKIP: استعمال کرتے ہوئے چھوڑیں
- IDHACK: _id کے لئے کوئری
- SHARDING_FILTER: مونگوس کے ذریعے شارڈڈ ڈیٹا کی کوئری
- COUNT: db.coll.explain().count() یا مشابہ عمل کرنے والے اعمال جب کوٹ اسکین کے لئے انڈیکس کا استعمال نہیں ہوتا ہے
- COUNTSCAN: کوٹ اسکین کے لئے انڈیکس کا استعمال نہیں ہوتا ہے
- COUNT_SCAN: کوٹ انڈیکس کے لئے استعمال ہونے پر واپسی مرحلے
- SUBPLA: $or کوئریز کے لئے انڈیکس کا استعمال نہیں ہوتا
- TEXT: پورے متن کے انڈیکس کا استعمال کرتے ہوئے کوئری کا استعمال
- PROJECTION: واپسی فیلڈز کو محدود کرنے کیلئے واپسی مرحلہ
executionStats مواد
ذیل میں دیا گیا مواد executionStats موڈ میں واپس کروایا جاتا ہے، غیر کلیدی معلومات کو نظرانداز کرتے ہوئے
{
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 5, // واپس آنے والے دستاویزات کی تعداد
"executionTimeMillis" : 0, // اجرائی وقت
"totalKeysExamined" : 0, // کتنے انڈیکس اسکین کیے گئے ہیں
"totalDocsExamined" : 5, // اندرونی تلاش کردہ دستاویزات کی کل تعداد
"executionStages" : {
"stage" : "COLLS CAN", // مرحلے کی قسم، COLLSCAN کا مرحلہ مطلب ٹیبل کی پوری تلاش ہونا ہے
"nReturned" : 5,
"executionTimeMillisEstimate" : 0,
"works" : 7,
"advanced" : 5,
"needTime" : 1,
"needYield" : 0,
"saveState" : 0,
"restoreState" : 0,
"isEOF" : 1,
"direction" : "forward",
"docsExamined" : 5
}
}
}
کوئری بہتر بنانے کے انداز
- انڈیکس کا جتنا ممکن ہو سکے استعمال کریں
- جتنے کم دستاویزات اسکین ہوں، اتنا بہتر ہے