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?
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?
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:
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.
Nessun riferimento a dove l'hai sentito? Hmm, direi in genere qualcosa che si adatta a uno spazio di 16 meg (max)? – Sammaye
ho aperto un problema in jira ed è stato menzionato nei commenti https://jira.mongodb.org/browse/CSHARP-725 – Serdar
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