Выборка или выгрузка в ТЗ результата запроса. Что больше нагружает память? #698555


#0 by hame1e00n
Имеется очень большой результат запроса. Что больше жрет память? Выборка или выгрузка результата в ТЗ? То что выгрузка в таблицу значений сильно медленнее чем выборка, знаю - последняя оптимизирована только для чтения. А вот что насчет загрузки памяти? Одинаково или что-то предпочтительнее?
#1 by hame1e00n
Ап!
#2 by Лодырь
Проведи эксперимент, мы тебе спасибо скажем.
#3 by H A D G E H O G s
монопенисуально, как по производительности, так и по памяти.
#4 by H A D G E H O G s
проблема будет позже, при обработки ТЗ/выборки
#5 by H A D G E H O G s
Ничто не мешает обрабатывать запрос кусками, поместив результат запроса во временную таблицу, задав запросу Менеджер временных таблиц и отсортировать по ключевому полю. И потом выбирать по аналогии с формой списка, ПЕРВЫЕ 1000, где КлючеваяКолонка>ПоследнееВыбранноеЗначение.
#6 by Лодырь
Интересный способ.
#7 by hame1e00n
Интересно) Возбму на вооружение, возможно придется делать так... а в чем проблема будет при обработке? мы ж уже выгрузили запрос в ТЗ или Выборку...
#8 by H A D G E H O G s
И что ты с ней делать будешь?
#9 by hame1e00n
Дальше там идет по информации из полученной нами ТЗ с данными формирование в виде текста формирование запроса на языке SQL, который дальше будет выполняться через ADODB.
#10 by hame1e00n
Есть ошибка с нехваткой памяти, где она конкретно получается, выясняю
#11 by hame1e00n
На средних объемах данных эта обработка работает, на больших - валится с нехваткой памяти
#12 by H A D G E H O G s
Замер производительности поможет тебе
#13 by МихаилМ
"select top..." - это избыточные блокировки на сервер субд. как правило страничные (блокировки). лучше тогда выбирать интервалы в отличии от 1с77 1с8 умеет освобождать память и для разовых обработок можно пару гигов закачать в озу
#14 by H A D G E H O G s
1С делает select top и я ей больше доверяю, чем некоему МихаилМ
#15 by Зойч
а если режим версионировния стоит?
#16 by hame1e00n
1. Короче как понял в случае больших запросов мне надо будет помещать результат запроса во временную таблицу, далее другим запросом в цикле читать ее кусками через select top. Но у нас же во временной таблице не будет номера строки... Что можно придумать? 2. Как память освобождать? Просто уничтожаю эту временную таблицу? 3. Нужно ли как-то память очищать в случае использования выгрузок в ТЗ и выборки? Там как-то явно указывать метод Очистить или = Неопределено?
#17 by МихаилМ
если у записи есть первичный ключ то указвайте как отправную точку  его в тема раскрыта.
#18 by hame1e00n
ключ каждый раз разный (разные данные выгружаются - из разных таблиц), например контрагенты, а потом документы. Можно ли как-то в запросе создать уникальный ключ для строки?
#19 by МихаилМ
не нужно . работайте с составным ключом.
#20 by H A D G E H O G s
Справочник.Контрагенты, Документ.ПКО, и.т.д. - вполне подойдут за уникальный ключ.
#21 by H A D G E H O G s
Если удалось выгрузить в ТЗ и падение по памяти уже в ее постобработке - можно удалять ее уже обработанные строки.
#22 by hame1e00n
, да! сейчас отследил - падение по нехватке памяти происходит уже после выгрузки в ТЗ при обработке полученных из нее данных. Будем удалять обработанные строки значит)
#23 by hame1e00n
а как очищается из памяти вся таблица? Очистить или достаточно таблице присвоить значение = Неопределено?
#24 by hame1e00n
+ Таблица значений имеется в виду Ну и Выборка тоже интересует)
#25 by Sorm
Select top - это неявная сортировка всегда. Если без индексов и пр - то как сервер решит. Ресурсы-то затратятся.
#26 by hame1e00n
Насчет явного освобождения памяти, занятой таблицей значений и выборкой можете подсказать? Как это сделать?
#27 by H A D G E H O G s
никак
#28 by H A D G E H O G s
пост 25.
#29 by МихаилМ
главная проблема это не сортировки которые не всегда, а избыточные блокировки, тк невозможно достаточно точно спрогнозировать какие записи попадут в выборку и сколько записей добавиться в планируемый интервал.
#30 by m-serg74
если из табл. знач. в постобработке например происходит вывод в таб. док. то может так случиться, что удаляемые обработанные строки будут освобождать памяти намного меньше чем заполняемый таб. док. ее сжирает... сам недавно воевал с КУДиР в БП 2.0 вариант - перенес все тяжелые по памяти процедуры на 64х сервер предприятия там практически нету ограничения по памяти
#31 by hame1e00n
Не, к счастью никуда не вывожу, просто обрабатываю.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С