Dans cet article, nous vous montrerons comment trouver des index inutilisés dans MongoDB, vérifier les statistiques d'utilisation de votre collection d'index et comment supprimer vos index inutilisés.
La gestion active des index de base de données MongoDB sur plusieurs versions d'application peut s'avérer difficile pour les équipes de développement. Les exigences changent souvent à chaque version, où plusieurs nouveaux index peuvent être ajoutés et les anciens index peuvent être abandonnés. Au fil du temps, cela rend difficile le suivi des index MongoDB utilisés et de ceux qui sont désormais inutiles.
Les index ont un impact important sur les performances d'écriture :chaque fois qu'il y a une écriture dans une collection, les index pertinents doivent être mis à jour. Le manque d'index se manifeste immédiatement et ralentit la requête - les index inutilisés sont plus subtils et doivent être activement supprimés pour améliorer les performances d'écriture. Plus d'informations peuvent être trouvées ici - Les dangers de la création d'index sur MongoDB.
Dans les versions antérieures de MongoDB, il n'existait aucun moyen simple de déterminer si un index n'était pas utilisé. Cependant, à partir de la version 3.2, MongoDB a ajouté la prise en charge de l'opérateur $indexStats qui vous permet de collecter des statistiques sur votre utilisation de l'index.
Rechercher des index inutilisés dans MongoDB
Pour vérifier les statistiques d'utilisation d'un index particulier sur une collection, vous pouvez utiliser cette commande :
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
Pour obtenir les statistiques de tous les index d'une collection :
db.collection.aggregate([{$indexStats:{}}])
Le document renvoyé ressemblera à ceci :
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Les deux champs importants à noter ici sont :
-
Opérations
Il s'agit du nombre d'opérations qui ont utilisé l'index.
-
Depuis
Il s'agit de l'heure à partir de laquelle MongoDB a collecté les statistiques, et il s'agit généralement de la dernière heure de démarrage.
Supprimer les index inutilisés dans MongoDB
Une fois que vous avez identifié et vérifié les index MongoDB inutilisés, vous pouvez supprimer l'index en utilisant le code ci-dessous :
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Comme toujours, veuillez vérifier que vous supprimez le bon index avant de procéder à l'opération de suppression.
Si vous avez des questions sur la recherche d'index inutilisés dans MongoDB, laissez un commentaire ci-dessous ou contactez-nous à [email protected].