En esta publicación, le mostraremos cómo encontrar índices no utilizados en MongoDB, verificar las estadísticas de uso en su colección de índices y cómo descartar sus índices no utilizados.
Administrar activamente los índices de la base de datos de MongoDB en varias versiones de aplicaciones puede ser un desafío para los equipos de desarrollo. Los requisitos a menudo cambian con cada versión, donde se pueden agregar varios índices nuevos y los índices antiguos pueden abandonarse. Con el tiempo, esto hace que sea difícil hacer un seguimiento de qué índices de MongoDB se están utilizando y cuáles ahora son innecesarios.
Los índices tienen un gran impacto en el rendimiento de escritura:cada vez que se escribe en una colección, los índices relevantes deben actualizarse. La falta de índices se manifiesta de inmediato y ralentiza la consulta:los índices no utilizados son más sutiles y deben eliminarse activamente para mejorar el rendimiento de escritura. Puede encontrar más información aquí: Peligros de crear índices en MongoDB.
En versiones anteriores de MongoDB, no había una manera fácil de determinar si no se estaba usando un índice. Sin embargo, a partir de la versión 3.2, MongoDB agregó soporte para el operador $indexStats que le permite recopilar estadísticas sobre el uso de su índice.
Encontrar índices no utilizados en MongoDB
Para verificar las estadísticas de uso de un índice particular en una colección, puede usar este comando:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
Para obtener las estadísticas de todos los índices de una colección:
db.collection.aggregate([{$indexStats:{}}])
El documento devuelto se verá así:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Los dos campos importantes a tener en cuenta aquí son:
-
Operaciones
Este es el número de operaciones que usaron el índice.
-
Desde
Esta es la hora a partir de la cual MongoDB recopiló estadísticas y suele ser la última hora de inicio.
Eliminación de índices no utilizados en MongoDB
Una vez que haya identificado y verificado los índices de MongoDB no utilizados, puede eliminar el índice usando el siguiente código:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Como siempre, verifique que esté eliminando el índice correcto antes de continuar con la operación de eliminación.
Si tiene alguna pregunta sobre cómo encontrar índices no utilizados en MongoDB, deje un comentario a continuación o comuníquese con nosotros a [email protected].