sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur förbättrar man prestanda för update() och save() i MongoDB?

Det är mycket troligt att du träffar en mycket vanlig flaskhals i MongoDB. Eftersom du uppdaterar dokument mycket ofta genom att lägga till strängar, finns det en god chans att du får ont om utrymme för det dokumentet och tvingar databasen att hela tiden flytta dokumentet till ett annat utrymme i minnet\disk genom att skriva om det i slutändan av datafilen.

Att lägga till index kan bara skada skrivprestandan så det kommer inte att bidra till att förbättra prestandan om du inte läser tungt.

Jag skulle överväga att ändra din applikationslogik för att göra detta:

  1. Indexa i sökordsfältet
  2. Innan du infogar något i databasen varje gång du upptäcker en tweet, fråga efter dokumentet som innehåller nyckelordet. Om det inte finns, infoga ett nytt dokument men fyll i ids egenskap genom att lägga till en hel massa falska strängar i arrayen. Sedan omedelbart efter att du har satt in den, ta bort alla id:n från den arrayen. Detta kommer att få mongodb att allokera ytterligare utrymme för hela dokumentet så att när du börjar lägga till id:n i ids-fältet kommer det att ha gott om utrymme att växa.
  3. Sätt in tweetens ID i ids fältet


  1. mongo-go-driver hitta ett dokument med _id

  2. MongoDB index/RAM-förhållande

  3. För många öppna filer samtidigt som du säkerställer indexmongo

  4. MongoDB:uppdaterar en array i array