Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

12.03.22 10:13
Re: Резюме для программиста
 
alex445 коренной житель
в ответ AlexNek 11.03.22 20:51, Последний раз изменено 12.03.22 10:32 (alex445)
Не понял? Свой zip.exe для xml надо сделать? А причем база тогда и логи?

Не свой, а стандартный GZipStream - в нём используется GZip алгоритм, который везде давно используется. Я читаю таблицу, где в некоторых полях XML-логи, которые составляют 99% веса записи, сжимаю их и вместе с остальными данными копирую в другую таблицу. Первая таблица, насколько я понял, иногда очищается, т.к. занимает гораздо больше места и быстрее заполняется. А у них там ограничение по лицензии на размер БД или что-то такое.


Сжиматься будет на той же машине, на которой БД крутится, но сейчас я подключаюсь к БД удалённо, поэтому кидаюсь данными по сети. Ну и опять же, сразу несколько гигов в память не загрузишь (хотя процесс может потреблять и больше 2 ГБ - вроде, в .NET с какой-то версии сняли это ограничение, когда на 64-бита всё перевели). Поэтому пакетно:


db.Table

.AsNoTracking

.OrderBy(o => o.Id)

.Skip

.Take


Это упрощённо. Меня только смущает, что на каждый пакет нужен отдельный запрос, и каждый раз нужно всю таблицу сначала упорядочить. Таблица, из которой я читаю, имеет кластерный индекс Id. Т.е. по идее можно не сортировать при каждом запросе, если всё, что мне нужно, просто пакеты по порадку считать? Кластерный индекс уже отсортирован - т.е. при каждом чтении нескольких записей из такой таблицы возвращается уже отсортированная последовательность? Т.е. в записи выше можно опустить OrderBy, не боясь, что пакеты перекроются по индексам?

 

Перейти на