DBAtlas · 데이터베이스 운영 아틀라스

실제 실행 통계로 쿼리 실행 계획 검사 (explain executionStats)

MongoDB성능

명령어

db.musteri.find({ sehir: "Ankara", durum: "aktif" }).sort({ kayitTarihi: -1 }).explain("executionStats")
// Summary: winning plan, returned documents, examined keys/documents and time
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 })
// For an aggregation:
db.musteri.explain("executionStats").aggregate([{ $match: { sehir: "Ankara" } }, { $group: { _id: "$durum", n: { $sum: 1 } } }])

하는 일

쿼리를 실행하고 채택된 계획(IXSCAN/COLLSCAN, SORT 단계), 반환 문서 수, 검사한 인덱스 key와 문서 수, 소요 시간을 보여 준다.

사용 시점

profiler나 로그에서 느리게 나타나는 쿼리를 분석할 때, 그리고 새 인덱스가 실제로 사용되는지 확인할 때.

주의

executionStats는 쿼리를 실제로 실행하므로 피크 시간에 무거운 쿼리를 explain하면 부하도 추가된다. 쓰기 명령(update/delete/findAndModify)에서 explain은 데이터를 변경하지 않지만 실행 계획은 실행한다. totalDocsExamined/nReturned 비율이 높거나 계획에 in-memory SORT 단계가 있으면 인덱스가 적합하지 않은 것이다.

DBAtlas에서 열기 →

관련 항목