2013-04-17 11 views
6

Ho sentito che le grandi dimensioni dei lotti non offrono prestazioni aggiuntiveQual è il numero di articoli bulk ottimale con il metodo InsertBatch nel driver mongodb C#?

qual è l'optimum?

+0

Nessun riferimento a dove l'hai sentito? Hmm, direi in genere qualcosa che si adatta a uno spazio di 16 meg (max)? – Sammaye

+0

ho aperto un problema in jira ed è stato menzionato nei commenti https://jira.mongodb.org/browse/CSHARP-725 – Serdar

+0

Ok penso di aver capito, sei per un inserto batch chiamante con una dimensione del documento maggiore di 16meg , che è quello che Robert sta dicendo anche per quanto riguarda i grandi batch di aiuti dipende da quanto sono puliti i dati, se è costantemente restituito al client a causa di errori, sarà più performante eseguire batch più piccoli (come dice di nuovo). Per quanto riguarda l'importo ottimale qui: hmm, forse 100 in un lotto? – Sammaye

risposta

7

Se si chiama Inserisci per inserire i documenti uno alla volta, è previsto un round trip di rete per ciascun documento. Se si chiama InsertBatch per inserire i documenti in lotti, è previsto un round trip di rete per ogni batch anziché per ciascun documento. InsertBatch è più efficiente di Insert perché riduce il numero di round trip della rete.

Supponiamo si doveva inserire 1.000.000 documenti, è possibile analizzare il numero di rotazioni di rete per le diverse dimensioni dei lotti:

  • dimensione del lotto 1: 1.000.000 viaggi di andata
  • dimensione del lotto 10: 100.000 viaggi rotonde
  • dimensione del lotto 100: 10.000 Giri
  • dimensioni 1000, 1000 viaggi di andata
  • lotti
  • ecc ...

Così si vede che anche una dimensione del lotto di 10 ha già eliminato il 90% dei viaggi di andata e ritorno della rete, e una dimensione del lotto di 100 ha eliminato il 99% dei viaggi di andata e ritorno della rete.

Questa è un'analisi un po 'semplificata perché ignora il fatto che all'aumentare delle dimensioni del batch aumentano anche le dimensioni dei messaggi, ma è più o meno preciso.

Non penso che ci sia una dimensione di lotto ottimale. Direi che i batch più grandi sono più performanti, ma una volta che si hanno 10-100 documenti per batch, ci saranno miglioramenti delle prestazioni molto piccoli con lotti più grandi.

Problemi correlati