Overview
Índices y admiten la ejecución eficiente de consultas en MongoDB. Sin embargo, cada índice que creas tiene un impacto negativo en el rendimiento de las escrituras y requiere espacio en disco.
Crear índices innecesarios conlleva a una colección inflada y escrituras lentas. Considera cada query que realiza tu aplicación y si justifica un índice. Remueve los índices que no se usen, ya sea porque el campo no se usa para consultar (query) la base de datos o porque el índice es redundante.
Debería identificar y descartar los índices innecesarios. Utiliza el Explorador de datos para administrar índices en Ops Manager.
Ejemplo
Considera un juego que premia coins a los jugadores. Cuando un jugador alcanza 20 coins, ese jugador gana 1 star y sus coins se restablecen a 0. El juego cuenta con una colección players que incluye documentos como los siguientes:
// players collection { "_id": "ObjectId(123)", "first_name": "John", "last_name": "Doe", "coins": 11, "stars": 2 }
La colección players tiene un índice para cada campo:
_idestá indexado por defecto.{ last_name: 1 }{ last_name: 1, first_name: 1 }{ coins: -1 }{ stars: -1 }
last_name Index
En este ejemplo, cuando el juego query a la base de datos la información del jugador, encuentra un solo registro utilizando el nombre completo de un jugador. El índice compuesto { last_name: 1,
first_name: 1 } cubre este caso, por lo que el juego debería descartar el índice { last_name: 1 } porque es redundante.
coins Index
En este ejemplo, el campo coins nunca se usa para buscar en la base de datos. El juego debería descartar el índice { coins: -1 } porque no se usa.
stars Index
En este ejemplo, al finalizar un juego, los nombres de los jugadores se muestran en una tabla de clasificación en orden descendente según el número de estrellas. El juego debe mantener el índice { stars: -1 }, aunque se utilice con poca frecuencia, para evitar escanear cada documento en la colección players.
Ahora, el juego utiliza los siguientes índices:
_idestá indexado por defecto.{ last_name: 1, first_name: 1 }{ stars: -1 }
Después de eliminar índices innecesarios, la colección players tiene más espacio libre y puede realizar escrituras más rápidas. Las lecturas más frecuentes no experimentan una caída en el rendimiento porque los índices que respaldan esas lecturas aún existen en la colección.
Identifica y descarta índices innecesarios
Para identificar índices innecesarios en Ops Manager, Ver índices con Data Explorer.
Bajo el Indexes La pestaña en Data Explorer, puedes ver Size, Usage y otra información para cada uno de tus índices. Si un índice no se usa o está cubierto por otro índice, debes descartarlo.
Para descartar un índice en Ops Manager, Descarte un índice con Data Explorer.
Obtén más información
Para aprender más sobre los índices, consulte Índices.
Para obtener más información sobre la indexación para su caso de uso, consulte Estrategias de indexación.
MongoDB también ofrece un curso gratuito de MongoDB University sobre cómo mejorar el rendimiento de las bases de datos, que incluye la optimización de índices. Supervisión y perspectivas.