DBAtlas · Atlas de operaciones de bases de datos

Inspeccionar un plan de consulta con estadísticas de ejecución reales (explain executionStats)

MongoDBRendimiento

Comando

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 } } }])

Qué hace

Ejecuta la consulta y muestra el plan ganador (IXSCAN/COLLSCAN, etapa SORT), el número de documentos devueltos, las claves de índice y documentos examinados y el tiempo empleado.

Cuándo usarlo

Al analizar una consulta que aparece lenta en el profiler o en el log, y al verificar que un índice nuevo se usa realmente.

Precaución

executionStats ejecuta realmente la consulta; hacer explain de una consulta pesada en horas pico también añade carga. Para comandos de escritura (update/delete/findAndModify), explain no modifica datos pero sí ejecuta el plan. Una relación totalDocsExamined/nReturned alta o una etapa SORT en memoria en el plan indica que el índice no es adecuado.

Abrir en DBAtlas →

Relacionado