SQL BulkCopy vs OPENDATASOURCE quale è più veloce

.net c# sqlbulkcopy sql-server

Domanda

Voglio inserire i dati in sqlserver dal file di accesso .mdb, che è il modo più veloce per eseguire i dati inserisce SQL BulkCopy o OPENDATASOURCE utilizzando OLEDB.

I dati sarebbero come 100.000 di record per circa 20 tabelle.

Grazie.

Sto facendo questo dal codice c #, dove ho bisogno di quale si comporta meglio, non sono in grado di confrontare perché OPENDATASOURCE chiede autorizzazioni di amministratore.

Risposta popolare

Nelle mie conclusioni è possibile ottenere le prestazioni di inserimento migliori per l'inserimento di grandi volumi di dati utilizzando SQL Bulk Copy poiché questo metodo ignora completamente il linguaggio di query SQL e trasmette i dati direttamente a SQL.

Ulteriori miglioramenti delle prestazioni

  • Per impostazione predefinita, SqlBulkCopy utilizza i blocchi di riga durante l'operazione di copia di massa. Se viene specificata l'opzione TableLock in SqlBulkCopyOptions, ottiene un blocco di aggiornamento collettivo per la durata dell'operazione di copia di massa e le prestazioni saranno migliorate.
  • Tabella cluster: se è fattibile, il modo migliore per caricarlo è rimuovere l'indice cluster.
  • Indici: gli indici creano enormi problemi con il parallelismo, quindi è sempre una buona idea caricare senza indici attivi

Puoi leggere di più su Whitepaper: prestazioni di SqlBulkCopy http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow