2010-12-09 10 views
21

¿Hay alguna manera de rastrear el rendimiento de "consultas" en MongoDB? ¿Prueba especialmente índices o subdocumentos?¿Seguir el rendimiento de MongoDB?

En sql puede ejecutar consultas, ver el tiempo de ejecución y otras métricas analíticas.

Tengo una gran colección de mongoDB y quiero probar diferentes variaciones e índices, no estoy seguro de cómo probarlo, sería bueno ver cuánto tardé en encontrar un registro ... (Soy nuevo en MongoDB). Gracias

Respuesta

22

Aquí hay dos cosas con las que probablemente esté familiarizado.

  1. Explicar planes
  2. Registros Slow

Explicar Planes

Here are some basic docs de explicar. Ejecutar Explain es tan simple como db.foo.find(query).explain(). (tenga en cuenta que esto realmente ejecuta la consulta, por lo que si su consulta es lenta, esto también será)

Para comprender el resultado, querrá consultar algunos de los documentos en los registros lentos a continuación. Básicamente se le dan detalles sobre "cuánto se escaneó el índice", "cuántos se encuentran", etc. Como en el caso de los detalles de rendimiento, la interpretación depende de usted. Lea los documentos arriba y abajo para indicarle la dirección correcta.

Logs Slow

Por defecto, los registros lentos son activos con un umbral de 100 ms. Here's a link a la documentación completa sobre la creación de perfiles. Un par de puntos clave para empezar:

Obtener/Establecer perfiles:

db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all 
db.getProfilingLevel(); 

Ver consultas lentas:

db.system.profile.find() 
+0

Solo para agregar después de unos años: ahora la "nueva" forma recomendada de usar explain es: db.foo.explain(). Find (query). Observe "explicar" antes de "buscar". Además, especifique explain (true) para obtener más detalles, como el número de documentos examinados: db.foo.explain (true) .find (query); Escriba db.foo.explain(). Help para enumerar las consultas en las que puede usar explain. – alexbt

Cuestiones relacionadas