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ć.