MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:forEach vs fetch + each

Te dwie instrukcje robią w zasadzie to samo na podstawowym poziomie interfejsu API, czyli pobierają kursor i przekształcają wyniki. Istnieje jednak jedna „podstawowa” różnica w wydajności:

  • .forEach() przekształci wyniki kursora „jeden na raz” i przetworzy dostarczoną funkcję iteratora.

  • .fetch() z drugiej strony pobiera "tablicę" z kursora "wszystko na raz", co oznacza, że ​​wszystko jest "w pamięci" za jednym uderzeniem.

Więc bez względu na wszystko, tak naprawdę nie jest "szybsze" w wykonywaniu "podstawowej" operacji pobierania z kursora zapytania. Jednak brak oceny „wyrażenia” w każdej iteracji kursora „może być” nieco szybszy, więc .fetch() może wygrać tutaj „trochę”.

Wielkim haczykiem jest oczywiście to, że „wszystko jest już w pamięci”, więc trzeba to rozważyć. Również w czasie .fetch() _.each() jest jeszcze do przetworzenia, jak to się mówi. „Co „zyskasz” na huśtawkach, które prawdopodobnie „tracisz” na rondach” .

Bez pełnej analizy porównawczej konkretnych przypadków „czasy” będą prawdopodobnie podobne. A ogólny benchmarking jest prawie bezużyteczny, chyba że dotyczy konkretnie rozmiaru zestawów danych, z którymi pracujesz.

W związku z tym wychodzi ogólny przypadek, „O tym samym” , Jednak używając .fetch() zużyje więcej pamięci niż tylko iterowanie kursora od początku.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $sum z grupy dokumentów i poddokumentów według $autora (MongoDB)

  2. jak uzyskać kombinacje elementów w polu tablicy w MongoDB?

  3. Agreguj z $sumą w mongodb

  4. Mongoid te same typy dokumentów osadzonych dla różnych pól

  5. Mongo usuń ostatnie dokumenty