sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur hittar man oanvända index i MongoDB?

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:

  1. Ops

    Detta är antalet operationer som använde indexet.

  2. Sedan

    Detta är den tidpunkt från vilken MongoDB samlade in statistik, och är vanligtvis den sista starttiden.

Hur man hittar oanvända index i MongoDB - Förbättra din skrivprestandaKlicka för att tweeta

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


  1. Hur man frågar MongoDB med like

  2. Hur man ställer in gräns för arraystorlek i Mongoose-schema

  3. Återanslut till MongoDB på ett tillförlitligt sätt

  4. Mongoose-schemareferens och odefinierad typ 'ObjectID'