Cómo ver las queries lentas en MongoDb 🐢
Si tienes problemas de rendimiento en tu base de datos MongoDb, una de las cosas a revisar es en qué emplea más tiempo. Veamos como ver las queries lentas en MongoDb
Activa el registro de queries 📊
Primero, debemos activar el registro de queries. Para ello conéctate a MongoDb y ejecuta el siguiente comando:
// Registra todas las queries
db.setProfilingLevel(2);
Si sólo quieres registrar las queries más pesadas, por ejemplo, las que tarden 100ms o más, ejecuta:
// Registra queries +100ms
db.setProfilingLevel(1, { slowms: 100 });
Para ver si hay algún nivel previo o confirmar si se ha aplicado el nuevo:
db.getProfilingStatus();
Cuya salida es algo como:
{ "was" : 0, "slowms" : 100, "sampleRate" : 1.0, "ok" : 1 }
Ejemplo de activación por primera vez ("was":0
) y registrando a partir de 100ms ("slowms":100
) en estado válido ("ok": 1
)
Cuando todo esté bajo control y quieras desactivarlo, lanza:
// Desactiva profiling
db.setProfilingLevel(0);
💡 Para más info de estos comandos, consulta la documentación oficial sobre profiling
Ver las queries más lentas 🐢
Los resultados se vuelcan en la colección db.system.profile
Asi que para ver el top 10 de queries lentas, podemos lanzar:
db.system.profile.find().limit(10).sort( { millis : -1 } ).pretty()
Ordenadas de las más lentas a más rapidas. En función de si son agregaciones, inserciones, actualizaciones o consultas, habrá diferentes campos por tipo de operación.
Así podemos encontrar si se utilizan índices, si se escanean más filas de las debidas y en definitiva, qué instrucciones se deben optimizar primero 🎯
💡 Si estás teniendo problemas de rendimiento, te puedo recomendar las recomendaciones sobre performance en la documentación oficial
Si tienes algún duda o pregunta, deja un comenario abajo 👇