I det här inlägget visar vi dig hur du hittar oanvända index i MongoDB, kontrollerar användningsstatistik för din indexsamling och hur du släpper dina oanvända index.
Att aktivt hantera MongoDB-databasindex över flera applikationsversioner kan vara utmanande för utvecklingsteam. Kraven ändras ofta med varje version, där flera nya index kan läggas till och gamla index kan bli övergivna. Med tiden gör detta det svårt att hålla reda på vilka MongoDB-index som används och vilka som nu är onödiga.
Index har stor inverkan på skrivprestandan – varje gång det skrivs till en samling måste de relevanta indexen uppdateras. Brist på index visar sig omedelbart och saktar ner frågan - oanvända index är mer subtila och måste aktivt beskäras för att förbättra skrivprestandan. Mer information finns här - Perils of building index on MongoDB.
I tidigare versioner av MongoDB fanns det inget enkelt sätt att avgöra om ett index inte användes. Men från och med version 3.2 lade MongoDB till stöd för $indexStats-operatorn som låter dig samla statistik om din indexanvändning.
Hitta oanvända index i MongoDB
För att kontrollera användningsstatistik för ett visst index på en samling kan du använda det här kommandot:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
För att få statistik för alla index för en samling:
db.collection.aggregate([{$indexStats:{}}])
Det returnerade dokumentet kommer att se ut så här:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
De två viktiga fälten att notera här är:
-
Ops
Detta är antalet operationer som använde indexet.
-
Sedan
Detta är den tidpunkt från vilken MongoDB samlade in statistik, och är vanligtvis den sista starttiden.
Släpp oanvända index i MongoDB
När du har identifierat och verifierat oanvända MongoDB-index kan du ta bort indexet med koden nedan:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Kontrollera som alltid att du släpper rätt index innan du fortsätter med släppoperationen.
Om du har några frågor om att hitta oanvända index i MongoDB, lämna en kommentar nedan eller kontakta oss på [email protected].