Winnipuh
Дата: 25.01.2010 14:44:21
Віполняется запрос к sql server, читается множество записей, для какждой из которых
строится объект и пишется на диск, т.е. строится индекс на диске.
В случае, когда множество содержит 20 млн записей приложение ест почти память.
Т.е. я так понимаю, что сначала приложение всасывает весь резулт сет, и только потом обрабатывает.
Как можно по-жругому, более оптимально сделать?
дерево
Дата: 25.01.2010 15:22:42
1 запрос - на кол-во строк. Второй запрос на закачко нужного (допустимого) кол-ва в цикле. Вместе с выгрузкой в файл. Имя файла генерится. И сохраняется в коллекции. Затем вся коллекция имен файлов записывается в главный файл. Решение можно сделать многопоточно. Грузить сразу несколько пакетов.
А ридер там или нет - дело десятое по большому счету. Тот же адаптер как вы думаете за счет чего селект выполняет? Да тот же ридер ему и грузит.
дерево
Дата: 25.01.2010 15:49:17
vagner,
ну и чего ридер применительно к данной задаче даст? какое такое неоспоримое преимущество? По сравнению с предварительной разбивкой на пакеты? Отвечу априори - ничегошеньки абсолютно. Потому что строки всё-равно где-то надо будет накапливать. Хоть в своём классе, хоть в датасете.