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 馃憞