2013-04-17 5 views
6

Ich habe gehört, dass große Losgrößen wirklich keine zusätzliche Leistung gebenWas ist die optimale Anzahl an Objekten mit der InsertBatch-Methode im mongodb C# -Treiber?

Was ist das Optimum?

+0

Kein Hinweis darauf, wo Sie es gehört haben? Hmm, würde ich normalerweise alles sagen, was in einen 16meg Raum (max) passt? – Sammaye

+0

Ich öffnete ein Problem in Jira und es wurde in den Kommentaren erwähnt https://jira.mongodb.org/browse/CSHARP-725 – Serdar

+0

Ok Ich denke, ich verstehe, Sie sind für einen Aufruf Batch-einfügen mit einer Dokumentgröße größer als 16meg Was Roberts auch sagt, ob große Chargen helfen, hängt davon ab, wie sauber Ihre Daten sind. Wenn sie aufgrund von Fehlern ständig zum Client zurückkehren, ist es leistungsfähiger, kleinere Chargen zu verarbeiten (wie er schon sagt). Was die optimale Menge hier angeht: hmm, vielleicht 100 im Batch? – Sammaye

Antwort

7

Wenn Sie zum Einfügen von Dokumenten nacheinander die Option Einfügen wählen, wird für jedes Dokument eine Netzwerkumgehung durchgeführt. Wenn Sie InsertBatch aufrufen, um Dokumente in Stapeln einzufügen, wird für jeden Stapel anstatt für jedes Dokument ein Netzwerkrundlauf ausgeführt. InsertBatch ist effizienter als Insert, da es die Anzahl der Netzwerkumläufe reduziert.

Angenommen, Sie 1.000.000 Dokumente einzufügen hatte, die Anzahl der Netzwerk-Rundfahrten für verschiedene Losgrößen analysieren konnte:

  • Losgröße 1: 1.000.000 Umläufe
  • Losgröße 10: 100.000 Umläufe
  • Losgröße 100: 10.000 Rundfahrten
  • Losgröße 1000, 1000 Umläufe
  • etc ...

So sehen Sie, dass bereits eine Losgröße von 10 bereits 90% der Netzwerkumläufe eliminiert hat und eine Losgröße von 100 99% der Netzwerkumläufe eliminiert hat.

Dies ist eine etwas vereinfachte Analyse, weil sie die Tatsache ignoriert, dass mit zunehmender Losgröße auch die Nachrichtengrößen zunehmen, aber es ist mehr oder weniger genau.

Ich glaube nicht, dass es eine eine optimale Batchgröße gibt. Ich würde sagen, dass größere Chargen leistungsfähiger sind, aber sobald Sie 10-100 Dokumente pro Charge haben, wird es bei größeren Chargen sehr kleine Leistungsverbesserungen geben.

Verwandte Themen