In dit bericht laten we u zien hoe u ongebruikte indexen in MongoDB kunt vinden, gebruiksstatistieken over uw indexverzameling kunt controleren en hoe u uw ongebruikte indexen kunt verwijderen.
Het actief beheren van MongoDB-database-indexen over verschillende app-releases kan een uitdaging zijn voor ontwikkelteams. Vereisten veranderen vaak met elke release, waarbij verschillende nieuwe indexen kunnen worden toegevoegd en oude indexen kunnen worden verlaten. Dit maakt het na verloop van tijd moeilijk om bij te houden welke MongoDB-indexen worden gebruikt en welke nu niet meer nodig zijn.
Indexen hebben een grote invloed op de schrijfprestaties:elke keer dat er naar een verzameling wordt geschreven, moeten de relevante indexen worden bijgewerkt. Het ontbreken van indexen manifesteert zich onmiddellijk en vertraagt de zoekopdracht - ongebruikte indexen zijn subtieler en moeten actief worden verwijderd om de schrijfprestaties te verbeteren. Meer informatie vindt u hier - Gevaren van het bouwen van indexen op MongoDB.
In eerdere versies van MongoDB was er geen gemakkelijke manier om te bepalen of een index niet werd gebruikt. Vanaf versie 3.2 heeft MongoDB echter ondersteuning toegevoegd voor de $indexStats-operator waarmee u statistieken kunt verzamelen over uw indexgebruik.
Ongebruikte indexen vinden in MongoDB
Als u gebruiksstatistieken van een bepaalde index voor een verzameling wilt controleren, kunt u dit commando gebruiken:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
Om de statistieken voor alle indexen van een collectie te krijgen:
db.collection.aggregate([{$indexStats:{}}])
Het geretourneerde document ziet er als volgt uit:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
De twee belangrijke velden om hier op te letten zijn:
-
Ops
Dit is het aantal bewerkingen dat de index heeft gebruikt.
-
Sinds
Dit is het tijdstip waarop MongoDB statistieken heeft verzameld, en is meestal de laatste starttijd.
Niet-gebruikte indexen verwijderen in MongoDB
Zodra u ongebruikte MongoDB-indexen heeft geïdentificeerd en geverifieerd, kunt u de index verwijderen met de onderstaande code:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Controleer zoals altijd of u de juiste index neerzet voordat u doorgaat met de verwijderingsbewerking.
Als je vragen hebt over het vinden van ongebruikte indexen in MongoDB, laat dan hieronder een reactie achter of neem contact met ons op via [email protected].