با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، جلسه بیست و هشتم از آموزش های MongoDB را با آموزش تجزیه و تحلیل کوئری ها در MongoDB آغاز می کنیم.تجزیه و تحلیل کوئری ها در MongoDB یک جنبه بسیار مهمی است که در اندازه گیری پایگاه داده و طراحی index سازی موثر است. همچنین ما در مورد کوئری های explain$ و hint$ در MongoDB که اغلب استفاده می شوند یاد می گیریم.
عملگر explain$ اطلاعات مربوط به کوئری، index های مورد استفاده در کوئری و سایر آمارها را فراهم می کند. هنگام تجزیه و تحلیل اینکه index های شما بهینه شده اند بسیار مفید است .
در جلسه قبلی ما یک index را برای مجموعه users روی فیلدهای gender و user_name با کوئری زیر ایجاد کردیم :
1 | >db.users.ensureIndex({gender:1,user_name:1}) |
اکنون نحوه استفاده explain$ را با کد زیر شروع می کنیم
1 | >db.users.find({gender:"M"},{user_name:1,_id:0}).explain() |
کوئری ()explain بالا نتیجه آنالیز شده زیرا باز میگرداند :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | { "cursor" : "BtreeCursor gender_1_user_name_1", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 0, "nscanned" : 1, "nscannedObjectsAllPlans" : 0, "nscannedAllPlans" : 1, "scanAndOrder" : false, "indexOnly" : true, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : { "gender" : [ [ "M", "M" ] ], "user_name" : [ [ { "$minElement" : 1 }, { "$maxElement" : 1 } ] ] } } |
اکنون به بررسی فیلدهایی که نتیجه به ما نشان داده می پردازیم :
عملگر hint$ باعث بهینه سازی کوئری هنگام استفاده از index مشخص شده برای اجرای کوئری می شود.
به خصوص هنگامی مفید است که شما می خواهید تست عملکرد کوئری با index های مختلف را انجام دهید.
به عنوان مثال، کوئری زیر index را روی فیلدهای gender و user_name مشخص می کند تا برای این کوئری استفاده شود :
1 | >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}) |
تجزیه و تحلیل کوئری بالا با استفاده از explain$ :
1 | >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain() |
آموزش تجزیه و تحلیل کوئری ها در MongoDB به اتمام رسید ، امیدواریم از مطالب ذکر شده بهره کافی را برده باشید. با ما همراه باشید تا در جلسه بعد عملیات اتمی در MongoDB را آموزش ببینید.