Я пишу приложение, которое выполняет много больших операций вставки на удаленный mssql-сервер с Perl DBI. Не уверен, будет ли это сервер 05 или 08 sql, но я рассчитал его как до сих пор, так и производительность похожа. По сути, существует большое количество строк, которые нужно вставить, и они оказываются узким местом. Я пробовал многострочные вставки в 08 (и трюк UNION ALL для дополнительного выбора в 05), изменяя, запускаются ли вставки во время предыдущей выборки или после, используя execut_array () для вставок из одной строки, все это с / без обязательных параметров.
Psuedocode:
select data query
while fetchrow {
do lots of calculations
construct insert
1) do inserts here
}
2) or do inserts here
Монитор активности на сервере sql усредняет многорядные вставки по 70 мс на штуку. Сами запросы были ограничены 58 строками на штуку, потому что на вставке 36 полей, и это легко достигает предела 2100 параметров.
Есть ли что-то очевидное, что я пропускаю? Любой другой метод, который я мог бы попытаться улучшить время? Игнорируя такие проблемы, как задержка или оборудование, я чувствую, что должно быть еще одно улучшение в моем рабочем процессе Perl или самих запросах. (Я искал bcp сервера sql, массовых вставок и т. Д.).
Спасибо за любой совет