Sorgu planını gerçek çalışma istatistikleriyle incele (explain executionStats)
MongoDBPerformansKomut
db.musteri.find({ sehir: "Ankara", durum: "aktif" }).sort({ kayitTarihi: -1 }).explain("executionStats")
// Ozet: kazanan plan, donen belge, taranan key/belge ve sure
const e = db.musteri.find({ sehir: "Ankara", durum: "aktif" }).sort({ kayitTarihi: -1 }).explain("executionStats");
({ plan: e.queryPlanner.winningPlan, n: e.executionStats.nReturned, keys: e.executionStats.totalKeysExamined, docs: e.executionStats.totalDocsExamined, ms: e.executionStats.executionTimeMillis })
// Aggregation icin:
db.musteri.explain("executionStats").aggregate([{ $match: { sehir: "Ankara" } }, { $group: { _id: "$durum", n: { $sum: 1 } } }])Ne yapar?
Sorguyu çalıştırarak kazanan planı (IXSCAN/COLLSCAN, SORT aşaması), dönen belge sayısını, taranan index key ve belge sayısını ve süreyi gösterir.
Ne zaman kullanılır?
Profiler veya log'da yavaş görünen bir sorguyu analiz ederken ve yeni bir index'in gerçekten kullanıldığını doğrularken.
Dikkat
executionStats sorguyu gerçekten çalıştırır; ağır bir sorguyu yoğun saatte explain etmek de yük getirir. Yazma komutlarında (update/delete/findAndModify) explain veriyi değiştirmez ama planı çalıştırır. totalDocsExamined/nReturned oranı yüksekse veya planda bellek içi SORT aşaması varsa index uygun değildir.