У меня есть хранимая процедура (SQL Server 2016), которая в настоящее время возвращает строки от 100К до 200К на основе параметров этого SP.
Каждая строка может иметь размер от 100 КБ до 200 КБ.Таким образом, общий размер может составлять от 10 ГБ до 20 ГБ.
Мой клиент (фоновое задание) должен вызвать этот SP, обработать все строки и отправить его другому клиенту.
Каков наилучший подход ксправиться с такими сценариями?
В настоящее время я думаю об использовании потокового перечислителя с использованием yield.
Получать запись всякий раз, когда datareader.Read () читает строку, обрабатывает ее и отправляет другому клиенту.
dataReader = command.ExecuteReader();
while (dataReader.Read())
{
obj = new SomeClass();
// prepare Someclass
yield return obj;
}
Достаточно ли этого подхода для обработки таких больших данных?
Есть ли лучший подход к этому?(Например, многопоточность и т. Д.)
Если да, то как мне подходить к этому.Любые указатели для ссылки?
Редактировать: SP имеет несколько соединений и запускается пару раз в день.