2013-04-17 8 views
6

Słyszałem, że duże rozmiary partii nie dają żadnej dodatkowej wydajności.Jaka jest optymalna liczba rzeczy luzem za pomocą metody InsertBatch w sterowniku mongodb C#?

jakie jest optimum?

+0

Brak odniesienia do miejsca, w którym je usłyszałeś? Hmm, zwykle powiedziałbym wszystko, co pasuje do 16meg (max)? – Sammaye

+0

Otworzyłem numer w jirach i zostało to wspomniane w komentarzach https://jira.mongodb.org/browse/CSHARP-725 – Serdar

+0

Ok Myślę, że rozumiem, jesteś za jednym wywoływaniem wsadowym wywołania z dokumentem o wielkości większej niż 16meg , co Robert mówi również o tym, kiedy duża partia pomaga, zależy od tego, jak czyste są twoje dane, jeśli ciągle powraca do klienta z powodu błędów, to bardziej wydajne będzie uruchamianie mniejszych partii (jak to mówi ponownie). Co do optymalnej ilości tutaj: hmm, może 100 w partii? – Sammaye

Odpowiedz

7

W przypadku wywoływania funkcji Wstawianie, aby wstawiać dokumenty pojedynczo, dla każdego dokumentu istnieje sieć obiegowa. Jeśli wywołasz funkcję InsertBatch w celu wstawienia dokumentów w partiach, dla każdej partii zamiast dla każdego dokumentu jest realizowana wycieczka objazdowa w sieci. Funkcja InsertBatch jest bardziej wydajna niż Insert, ponieważ zmniejsza liczbę tras w sieci.

Załóżmy, że musiał włożyć 1.000.000 dokumentów, można analizować liczbę sieciowych rejsów dla różnych wielkości partii:

  • wielkość partii 1: 1.000.000 obie strony
  • wielkość partii 10: 100,000 rejsów
  • wielkość partii 100: 10000 obie strony
  • wielkość partii 1000, 1000 obie strony
  • etc ...

Widać więc, że nawet partia o wielkości zaledwie 10 już wyeliminowała 90% podróży w obie strony, a wielkość partii 100 wyeliminowała 99% podróży w obie strony.

Jest to nieco uproszczona analiza, ponieważ pomija fakt, że wraz ze wzrostem rozmiarów partii zmieniają się rozmiary wiadomości, ale są mniej lub bardziej dokładne.

Nie sądzę, że istnieje jeden optymalny rozmiar partii dla jednego jednego. Powiedziałbym, że większe partie są bardziej wydajne, ale gdy masz 10-100 dokumentów na partię, będzie bardzo mała poprawa wydajności przy większych partiach.

Powiązane problemy