Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какъв е препоръчителният размер на партидата за SqlBulkCopy?

Имам помощна програма за импортиране на същия физически сървър като моята инстанция на SQL Server. Използване на персонализиран IDataReader , анализира плоски файлове и ги вмъква в база данни с помощта на SQLBulkCopy . Типичният файл има около 6 милиона квалифицирани реда, средно 5 колони с десетичен и кратък текст, около 30 байта на ред.

Като се има предвид този сценарий, установих, че размерът на партидата от 5000 е най-добрият компромис от скоростта и консумацията на памет. Започнах с 500 и експериментирах с по-големи. Открих, че 5000 са 2,5 пъти по-бързи средно от 500. Вмъкването на 6 милиона реда отнема около 30 секунди с размер на партидата от 5000 и около 80 секунди с размер на партидата от 500.

10 000 не бяха измеримо по-бързи. Преместването до 50 000 подобри скоростта с няколко процентни пункта, но не си струва увеличеното натоварване на сървъра. Над 50 000 не показаха подобрения в скоростта.

Това не е формула, но е друга точка от данни, която можете да използвате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате OBJECT_ID() за кръстосани обекти от бази данни в SQL Server

  2. Как да добавите колона за идентичност към таблицата чрез TSQL и GUI в SQL Server - SQL Server / T-SQL урок, част 40

  3. Node.js и Microsoft SQL Server

  4. Функция SUM() в SQL Server

  5. SQL UPDATE оператор за превключване на две стойности в два реда