sql >> Database teknologi >  >> NoSQL >> MongoDB

forstå MongoDB cache-system

Bemærk :Dette blev skrevet tilbage i 2013, da MongoDB stadig var ret ung, det havde ikke de funktioner, det har i dag, mens dette svar stadig gælder for mmap, det gør det ikke for de andre lagringsteknologier, som MongoDB nu implementerer, såsom WiredTiger, eller Percona.

Et godt sted at begynde for at forstå præcis hvad er et indeks:http://docs.mongodb.org/manual/core/indexes/

Når du har pudset op på det, vil du fortælle, hvorfor de er så gode, men springe frem til nogle af de mere indviklede spørgsmål.

Hvordan kan vi være sikre på, at data, vi forespørger på, kommer fra hukommelsen eller ej?

En måde er at se på yields felt på enhver forespørgsel explain() . Dette vil fortælle dig, hvor mange gange læseren har givet sin lås, fordi data ikke var i RAM.

En anden mere dybdegående måde er at se på programmer som mongostat og andre sådanne programmer. Disse programmer vil fortælle dig om, hvilke sidefejl (når data skal indlæses i RAM fra disk) der sker på din mongod .

Jeg forstår, at MongoDB bruger den ledige hukommelse til at cache data om hukommelsen, som er ledig i øjeblikket, men er der nogen, der kan forklare den globale adfærd yderligere?

Dette er faktisk forkert. Det er nemmere bare at sige, at MongoDB gør dette, men i virkeligheden gør det det ikke. Det er faktisk operativsystemet og dets egne personsøgningsalgoritmer, normalt LRU, der gør dette for MongoDB. MongoDB laver cache-indeksplaner i en vis periode, så det ikke hele tiden skal tjekke og teste for indekser.

I hvilket tilfælde kunne det være bedre at bruge en variabel i vores nodeserver, som gemmer data end at stole på MongoDB-cachesystemet?

Jeg er ikke sikker på, hvordan du forventer, at det virker...jeg mener, de to gør ret forskellige ting, og hvis du har til hensigt at læse dine data fra MongoDB ind i din applikation ved opstart i den var, så vil jeg bestemt ikke anbefale det.

Udover OS er algoritmer til hukommelsesstyring ekstremt modne og hurtige, så det er ok.

Hvordan anbefaler du globalt at bruge MongoDB til stor trafik?

Hmm, det er sådan et stort spørgsmål. Jeg vil virkelig anbefale dig at Google lidt i dette emne, men som dokumentationen siger, skal du sikre dig, at dit arbejdssæt passer ind i RAM for én.

Her er et godt udgangspunkt:Hvad betyder det at passe "arbejdssæt" ind i RAM til MongoDB?



  1. Indsæt element i indlejrede arrays i MongoDB

  2. hvordan man konverterer streng til numeriske værdier i mongodb

  3. Mongo:tæl antallet af ordforekomster i et sæt dokumenter

  4. MongoDB opdaterer felter i indlejret array