Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Remover índices innecesarios

Losíndices facilitan la ejecución eficiente de consultas en MongoDB. Sin embargo, cada índice creado 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.

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:

  • _id está indexado por defecto.

  • { last_name: 1 }

  • { last_name: 1, first_name: 1 }

  • { coins: -1 }

  • { stars: -1 }

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.

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.

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:

  • _id está 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.

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.

  • 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.

Volver

Evitar el arreglo ilimitado

En esta página