Обработка огромных данных с сервера SQL - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть хранимая процедура (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 имеет несколько соединений и запускается пару раз в день.

1 Ответ

0 голосов
/ 19 декабря 2018

Согласно вашему описанию, я считаю, что он представляет собой хороший сценарий для реализации служб SSIS (служб Integration Services), которые могут управлять конечными результатами и записывать их в файл CSV и позволяют клиенту обмениваться ими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...