2012-09-10 13 views
9

Como el código de mi proyecto está evolucionando, se están implementando nuevos índices y estoy seguro de que algunos ya no son necesarios. Sin embargo, antes de dejarlos caer para ver si algo se ralentiza o no, preferiría que hubiera una forma más programática o analítica para determinar si ya se usa un índice.¿Alguna manera fácil de saber si los índices mongodb aún se usan o no?

No veo nada en la colección de system.indexes, pero idealmente hay algunas estadísticas sobre los accesos de índice en alguna parte. ¿Es este el caso?

+2

No hay una métrica directa de información de uso por índice (como en MongoDB 2.2.0). Hay varias sugerencias relacionadas con las métricas vinculadas a un ticket de seguimiento en la cola de problemas de MongoDB: [SERVER-5828] (https://jira.mongodb.org/browse/SERVER-5828). – Stennie

Respuesta

11

Ejecute sus consultas db.collection.find(...) con .explain() pegado en el extremo. Esa es la forma más útil para ver cómo se ejecutan las consultas: http://www.mongodb.org/display/DOCS/Explain

También puede activar la creación de perfiles, y las entradas de registro de perfil le dan el uso del índice para cada consulta perfilada. Sin embargo, todavía no hay estadísticas agregadas. En particular, no le dará los índices que no se están usando, solo el índice que se está usando (para cada consulta). (Edit: debe haber estado imaginando que - usted tiene que conseguir la consulta desde el generador de perfiles y luego ejecutar a explicar en cierto modo dolorosa manualmente..) http://www.mongodb.org/display/DOCS/Database+Profiler

Actualización: acabo de ver esto desde mongolab; que parece un nuevo proyecto interesante a lo largo de estas líneas: http://blog.mongolab.com/2012/06/introducing-dex-the-index-bot/

Actualización: he creado un script para comprobar si hay índices que no se utilizan, a través del generador de perfiles: https://github.com/wfreeman/indexalizer

+2

Dex parece bastante genial, pero aún no me deja saber qué índices no se utilizan. ¡Voy a echarle un vistazo! Entonces parece que es el camino a seguir para hacer un perfil por un tiempo y luego ver qué índices nunca aparecieron. – Zugwalt

+0

Sí, la creación de perfiles es probablemente la mejor opción. De hecho, consideré escribir una herramienta para hacer esto de forma automática, tal vez debería romperlo de nuevo. –

+1

Ok, pasé un par de horas en un script ... parece funcionar en mi sistema bastante simple. Avíseme si ayuda. –

Cuestiones relacionadas