Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaki jest zalecany rozmiar partii dla SqlBulkCopy?

Mam narzędzie do importowania znajdujące się na tym samym serwerze fizycznym, co moja instancja SQL Server. Korzystanie z niestandardowego IDataReader , analizuje płaskie pliki i wstawia je do bazy danych za pomocą SQLBulkCopy . Typowy plik ma około 6 mln kwalifikowanych wierszy, średnio 5 kolumn tekstu dziesiętnego i krótkiego, około 30 bajtów na wiersz.

Biorąc pod uwagę ten scenariusz, znalazłem wielkość partii 5000, która jest najlepszym kompromisem szybkości i zużycia pamięci. Zacząłem od 500 i eksperymentowałem z większymi. Odkryłem, że 5000 jest średnio 2,5 razy szybsze niż 500. Wstawienie 6 milionów wierszy zajmuje około 30 sekund przy wielkości partii 5000 i około 80 sekund przy wielkości partii 500.

10 000 nie było wymiernie szybsze. Przejście do 50 000 poprawiło prędkość o kilka punktów procentowych, ale nie jest warte zwiększonego obciążenia serwera. Powyżej 50 000 nie wykazało żadnej poprawy szybkości.

To nie jest formuła, ale jest to kolejny punkt danych, którego możesz użyć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamicznie twórz kolumny sql

  2. Zwróć wiersze zawierające znaki inne niż alfanumeryczne w SQL Server

  3. Najszybszy sposób na ustalenie, czy rekord istnieje

  4. Podstawy automatyzacji zadań SQL Server

  5. Dowiedz się, dlaczego nie udało się wysłać wiadomości e-mail w programie SQL Server (T-SQL)