SqlBulkCopy è la scelta sbagliata per gli inserimenti a riga singola efficienti?

c# sqlbulkcopy sql-server windows-services

Domanda

Buongiorno.

Ho un servizio che sto scrivendo in C # che esegue e inserisce una singola riga ogni 15 secondi circa. Questo intervallo è definibile dall'utente ma al momento 15 secondi è l'intervallo di destinazione.

Ho letto questo articolo: SqlBulkCopy su un singolo record? che spiega chiaramente i vantaggi del throughput dell'uso di un inserto normale rispetto all'esecuzione di un inserto di massa singola. Ma menziona (o sottintende) anche che l'inserto regolare è un po 'più pesante sulla CPU rispetto all'inserto di massa.

Poiché il servizio che sto scrivendo è un servizio di supporto e poiché l'inserto è limitato artificialmente a solo 1 in un dato intervallo, mi chiedo se l'implicazione di cui sopra sia giustificazione per l'utilizzo di SqlBulkCopy su un normale inserto. Ovviamente voglio che il mio servizio sia il più leggero possibile.

Risposta esperta

La risposta nel tuo articolo dice che SqlBulkCopy è 4.4x più lento e prende il doppio della CPU di un semplice comando SQL. Hai letto male la risposta (o l'ho fatto), afferma che SqlBulkCopy è più pesante sulla CPU di un normale inserto che ha più senso.

La risposta è semplice: tieni d'occhio SQL Command se sei sicuro al 100% che sia necessario inserire un solo record.

Perfino la mia libreria C # Bulk Operations non utilizza SqlBulkCopy finché non raggiunge una quantità specifica di riga che è normalmente dieci perché SqlBulkCopy è troppo pesante.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché