Я создаю сложное приложение. Частью этого приложения является агент, который работает на других серверах и отправляет данные в веб-службу (ASP MVC) -> JSON. В контроллере я конвертирую данные в XML и вызываю хранимую процедуру, которая сохраняет их в таблице. Задание агента SQL собирает данные и выполняет необходимые операции создания, обновления и удаления для некоторых таблиц.
Все идет нормально...
Проблема здесь в скорости. Сгенерированный XML имеет размер в несколько мегабайт. В настоящее время это ~ 16 МБ. Вставка строки XML в новую строку БД занимает 5-6 секунд.
Что я пробовал:
- Изменен столбец БД на XML. Тот же результат!
- Я думал, что проблема в Entity Framework. Я заменил этот код хранимой процедурой. Тот же результат!
- Удалены все операторы из SP -> пустая хранимая процедура. Тот же результат!
- Тип параметра изменен с string/nvarchar(max) на byte[]/varbinary(max). Это принесло некоторое улучшение. Теперь это на 50% быстрее. Но все равно медленно.
Кажется, что передача этой большой строки или массива байтов на сервер SQL занимает очень много времени!
Что я могу сделать, чтобы получить это быстрее?
Я подумал о следующем: - Поместите данные в файловую систему и проинструктируйте SQL-сервер обработать их с помощью SELECT FROM OPENROWSET.
Есть ли альтернативы?
FILESTREAM
, если вы хотите продвигаться вперед. - person Igor   schedule 20.04.2016