Интерпретация и точная настройка параметра BATCHSIZE?

#sql #sql-server #tsql #sql-server-2008

#sql #sql-сервер #tsql #sql-server-2008

Вопрос:

Итак, я играю с BULK INSERT заявлением и начинаю любить его. То, о чем говорили SQL Server Import/Export Wizard 7 часов, занимает всего 1-3 часа использования BULK INSERT . Однако я наблюдаю, что время до завершения сильно зависит от BATCHSIZE спецификации.

Ниже приведены случаи, которые я наблюдал для файла объемом 5,7 ГБ, содержащего 50 миллионов записей:

 BATCHSIZE = 50000,  Time Taken: 17.30 mins
BATCHSIZE = 10000,  Time Taken: 14:00 mins
BATCHSIZE = 5000 ,  Time Taken: 15:00 mins
  

Это только вызывает у меня любопытство: возможно ли определить хорошее число для BATCHSIZE и если да, то от каких факторов это зависит и можно ли его приблизить без необходимости запускать один и тот же запрос десятки раз?

Моим следующим запуском будет файл объемом 70 ГБ, содержащий 780 миллионов записей. Любые предложения будут оценены? Я сообщу о результатах, как только закончу.

Ответ №1:

Здесь есть некоторая информация, и, похоже, размер пакета должен быть настолько большим, насколько это практически возможно; в документации в целом указано, что чем больше размер пакета, тем выше производительность, но вы этого вообще не испытываете. Кажется, что 10 кб — это хороший размер пакета для начала, но я бы посмотрел на оптимизацию массовой вставки с других точек зрения, таких как перевод базы данных в простой режим или указание подсказки tablock во время выполнения импорта.

Комментарии:

1. 1 Спасибо! Я не подумал ни об одном из них. Надеюсь, это покажет некоторое улучшение производительности 🙂