Ostatnio zauważyłem ogromną różnicę w wydajności między wielokrotnymi wersjami (poprzez bulk operations) a wstawką (wieloma dokumentami). Chciałbym wiedzieć, czy jestem właściwie na to:MongoDB: Update/Upsert vs Insert
- upsert/poprawki będzie jak
find()
iupdate()
tak to robi 2 rzeczy czytać i pisać - Włóż po prostu napisać, więc jej dużo szybciej
Tak więc różnica w wydajności?
Jeśli tak jest, to zastanawiam się, czy potrzebuję dużo zapisów regularnie, zamiast aktualizować dokument, piszę nowy dokument z polem createdOn
. Następnie, aby zapytać, po prostu zapytam o dokumenty, posortowane według createdOn DESC
. Zastanawiam się, czy to jest dobra metoda? Czy jest jakiś lepszy sposób?
- Zastanawiam się, czy mam indeks na kolekcji, czy może przyspieszyć aktualizację? Ale czy ten indeks nie spowolni zapisu?
- Przy drugim sposobie, w którym wkładam tylko wkładki, zwolni to, że mam zbyt wiele dokumentów? Czy to jest praktyczne (przyspieszyć pisanie)?
- Próbowałem również zwiększyć rozmiar puli połączeń. Nie jestem pewien, co jest optymalne, ale próbowałem 20 i widzę, że potrafię obsłużyć około 20 zapytań na sekundę przez mongostat. Spodziewałem się, że będzie o wiele wyższa.
Ogólnie rzecz biorąc, indeksy służą tylko do przyspieszania odczytów. Nie pisze. –
=> Tworzenie różnych dokumentów za każdym razem: Będzie to dobre rozwiązanie w zależności od częstotliwości dodawania dokumentu. Jeśli liczba dokumentów będzie ogromna w bardzo krótszym czasie, zapytanie wyszukiwania będzie wolniejsze. Nie użyję tego bca Mam dokumenty zamówienia w każdym zapytaniu ... Nawet muszę dostać jeden dokument. –