মোংগোডিবি সংস্করণ 3.0 দিয়ে শুরু করে, কেবল ক্রম থেকে ক্রম পরিবর্তন করে
collection.aggregate(...).explain()
প্রতি
collection.explain().aggregate(...)
আপনাকে পছন্দসই ফলাফল দেবে ( এখানে ডকুমেন্টেশন )।
পুরানো সংস্করণগুলিতে> = 2.6 এর জন্য আপনাকে একত্রিত পাইপলাইন ক্রিয়াকলাপের বিকল্পটি ব্যবহার করতে হবেexplain
explain:true
db.collection.aggregate([
{ $project : { "Tags._id" : 1 }},
{ $unwind : "$Tags" },
{ $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}},
{ $group: {
_id : "$_id",
count: { $sum:1 }
}},
{$sort: {"count":-1}}
],
{
explain:true
}
)
সমষ্টি ফ্রেমওয়ার্ক একটি গুরুত্বপূর্ণ বিবেচনা করে একটি সূচক শুধুমাত্র একটি পাইপলাইন জন্য প্রারম্ভিক ডেটা আনতে ব্যবহার করা যেতে পারে (যেমন ব্যবহার $match, $sort, $geonearএকটি পাইপলাইন শুরুতে) পাশাপাশি পরবর্তী $lookupএবং $graphLookupপর্যায়ে। একবার ডাটা প্রক্রিয়াকরণের জন্য অ্যাগ্রিগেশন পাইপলাইন মধ্যে সংগৃহীত হয়েছে (যেমন মত পর্যায়ে মাধ্যমে ক্ষণস্থায়ী $project, $unwindএবং $group) আরও ম্যানিপুলেশন ইন-মেমোরি (সম্ভবত অস্থায়ী ফাইল ব্যবহার করা হয় তবে হতে হবে allowDiskUseবিকল্প সেট)।
পাইপলাইন অপ্টিমাইজ করা
সাধারণভাবে, আপনি এগ্রিগেশন পাইপলাইনগুলি এর দ্বারা অনুকূল করতে পারেন:
$matchপ্রাসঙ্গিক ডকুমেন্টগুলিতে প্রক্রিয়াকরণ সীমাবদ্ধ করতে একটি মঞ্চ দিয়ে পাইপলাইন শুরু করা ।
- প্রাথমিক
$match/ $sortপর্যায়ে সুনিশ্চিত করা একটি দক্ষ সূচক দ্বারা সমর্থিত ।
- ফিল্টারিং ডেটা গোড়ার দিকে ব্যবহার
$match, $limitএবং $skip।
- অপ্রয়োজনীয় পর্যায় এবং দস্তাবেজ ম্যানিপুলেশন হ্রাস করা (জটিল একীকরণ জিমন্যাস্টিকস প্রয়োজন হলে সম্ভবত আপনার স্কিমার পুনর্বিবেচনা করা)।
- আপনি যদি আপনার মঙ্গোডিবি সার্ভার আপগ্রেড করেন তবে আরও নতুন একাগ্রেশন অপারেটরদের সুবিধা গ্রহণ করছেন। উদাহরণস্বরূপ, মঙ্গোডিবি ৩.৪ এরে , স্ট্রিং এবং দিকগুলির সাথে কাজ করার জন্য সমর্থন সহ অনেকগুলি নতুন একত্রিতকরণের পর্যায় এবং অভিব্যক্তি যুক্ত করেছে।
এছাড়াও অনেকগুলি একত্রিত পাইপলাইন অপটিমাইজেশন রয়েছে যা আপনার মঙ্গোডিবি সার্ভার সংস্করণের উপর নির্ভর করে স্বয়ংক্রিয়ভাবে ঘটে। উদাহরণস্বরূপ, সংলগ্ন পর্যায়গুলি আউটপুট ফলাফলগুলিকে প্রভাবিত না করে কার্যকরভাবে উন্নতি করতে coalesced এবং / অথবা পুনরায় অর্ডার করা যেতে পারে।
সীমাবদ্ধতা
মঙ্গোডিবি ৩.৪-এর মতো, সমষ্টি ফ্রেমওয়ার্ক explainবিকল্পটি কীভাবে পাইপলাইন প্রসেস করা হয় সে সম্পর্কিত তথ্য সরবরাহ করে তবে কোনও প্রশ্নের executionStatsজন্য মোডের মতো একই স্তরের বিশদটিকে সমর্থন করে না find()। আপনি প্রাথমিক ক্যোয়ারী মৃত্যুদন্ড নিখুঁত উপর দৃষ্টি নিবদ্ধ করা হয় আপনি সম্ভবত এটা উপকারী সমতুল্য পর্যালোচনা করতে পাবেন find().explain()সঙ্গে ক্যোয়ারী executionStatsবা allPlansExecutionভারবোসিটি ।
মোংগোডিবি ইস্যু ট্র্যাকারে দেখার / আপভোট করার জন্য কয়েকটি প্রাসঙ্গিক বৈশিষ্ট্য অনুরোধ রইল যাতে প্রোফাইল / প্রোফাইল সমষ্টি পাইপলাইনগুলি অনুকূল করতে সহায়তা করে: