Overview
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.
Identificar y eliminar í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 eliminar un índice en Ops Manager, elimine un índice con el Explorador de datos.
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 universitario gratuito de MongoDB sobre cómo mejorar el rendimiento de las bases de datos, incluida la optimización de índices: Monitoreo y conocimientos.