Имя: Пароль:
1C
1С v8
Выборка или выгрузка в ТЗ результата запроса. Что больше нагружает память?
,
0 hame1e00n
 
13.02.14
12:28
Имеется очень большой результат запроса.
Что больше жрет память? Выборка или выгрузка результата в ТЗ?
То что выгрузка в таблицу значений сильно медленнее чем выборка, знаю - последняя оптимизирована только для чтения. А вот что насчет загрузки памяти? Одинаково или что-то предпочтительнее?
1 hame1e00n
 
13.02.14
12:31
Ап!
2 Лодырь
 
13.02.14
12:32
(0) Проведи эксперимент, мы тебе спасибо скажем.
3 H A D G E H O G s
 
13.02.14
12:35
монопенисуально, как по производительности, так и по памяти.
4 H A D G E H O G s
 
13.02.14
12:35
проблема будет позже, при обработки ТЗ/выборки
5 H A D G E H O G s
 
13.02.14
12:37
Ничто не мешает обрабатывать запрос кусками, поместив результат запроса во временную таблицу, задав запросу Менеджер временных таблиц и отсортировать по ключевому полю.

И потом выбирать по аналогии с формой списка, ПЕРВЫЕ 1000, где КлючеваяКолонка>ПоследнееВыбранноеЗначение.
6 Лодырь
 
13.02.14
12:40
(5) Интересный способ.
7 hame1e00n
 
13.02.14
12:42
(5) Интересно) Возбму на вооружение, возможно придется делать так...

(4) а в чем проблема будет при обработке? мы ж уже выгрузили запрос в ТЗ или Выборку...
8 H A D G E H O G s
 
13.02.14
12:45
(7) И что ты с ней делать будешь?
9 hame1e00n
 
13.02.14
12:47
(8) Дальше там идет по информации из полученной нами ТЗ с данными формирование в виде текста формирование запроса на языке SQL, который дальше будет выполняться через ADODB.
10 hame1e00n
 
13.02.14
12:48
Есть ошибка с нехваткой памяти, где она конкретно получается, выясняю
11 hame1e00n
 
13.02.14
12:49
На средних объемах данных эта обработка работает, на больших - валится с нехваткой памяти
12 H A D G E H O G s
 
13.02.14
12:49
Замер производительности поможет тебе
13 МихаилМ
 
13.02.14
12:51
"select top..." - это избыточные блокировки на сервер субд.
как правило страничные (блокировки).

лучше тогда выбирать интервалы

v8: запрос в цикле


в отличии от 1с77 1с8 умеет освобождать память
и для разовых обработок можно пару гигов закачать в озу
14 H A D G E H O G s
 
13.02.14
12:55
(13) 1С делает select top и я ей больше доверяю, чем некоему МихаилМ
15 Зойч
 
13.02.14
12:55
(13) а если режим версионировния стоит?
16 hame1e00n
 
13.02.14
13:00
1. Короче как понял в случае больших запросов мне надо будет помещать результат запроса во временную таблицу, далее другим запросом в цикле читать ее кусками через select top. Но у нас же во временной таблице не будет номера строки... Что можно придумать?

2. Как память освобождать? Просто уничтожаю эту временную таблицу?

3. Нужно ли как-то память очищать в случае использования выгрузок в ТЗ и выборки? Там как-то явно указывать метод Очистить() или = Неопределено?
17 МихаилМ
 
13.02.14
13:04
(16)

если у записи есть первичный ключ

то указвайте как отправную точку  его в (13) тема раскрыта.
18 hame1e00n
 
13.02.14
13:07
(17) ключ каждый раз разный (разные данные выгружаются - из разных таблиц), например контрагенты, а потом документы. Можно ли как-то в запросе создать уникальный ключ для строки?
19 МихаилМ
 
13.02.14
13:20
(18)
не нужно . работайте с составным ключом.
20 H A D G E H O G s
 
13.02.14
13:23
(18) Справочник.Контрагенты, Документ.ПКО, и.т.д. - вполне подойдут за уникальный ключ.
21 H A D G E H O G s
 
13.02.14
13:24
(16) Если удалось выгрузить в ТЗ и падение по памяти уже в ее постобработке - можно удалять ее уже обработанные строки.
22 hame1e00n
 
13.02.14
13:53
(21), да! сейчас отследил - падение по нехватке памяти происходит уже после выгрузки в ТЗ при обработке полученных из нее данных. Будем удалять обработанные строки значит)
23 hame1e00n
 
13.02.14
13:55
(21) а как очищается из памяти вся таблица?

Очистить() или достаточно таблице присвоить значение = Неопределено?
24 hame1e00n
 
13.02.14
13:56
+(23) Таблица значений имеется в виду

Ну и Выборка тоже интересует)
25 Sorm
 
13.02.14
14:02
(14) Select top - это неявная сортировка всегда. Если без индексов и пр - то как сервер решит. Ресурсы-то затратятся.
26 hame1e00n
 
13.02.14
14:14
Насчет явного освобождения памяти, занятой таблицей значений и выборкой можете подсказать? Как это сделать?
27 H A D G E H O G s
 
13.02.14
14:31
никак
28 H A D G E H O G s
 
13.02.14
14:32
29 МихаилМ
 
13.02.14
14:33
(25)
главная проблема это не сортировки

которые не всегда, а избыточные блокировки, тк невозможно достаточно точно спрогнозировать какие записи попадут в выборку и сколько записей добавиться в планируемый интервал.
30 m-serg74
 
13.02.14
14:42
(22) если из табл. знач. в постобработке например происходит вывод в таб. док. то может так случиться, что удаляемые обработанные строки будут освобождать памяти намного меньше чем заполняемый таб. док. ее сжирает...
сам недавно воевал с КУДиР в БП 2.0 вариант - перенес все тяжелые по памяти процедуры на 64х сервер предприятия там практически нету ограничения по памяти
31 hame1e00n
 
13.02.14
15:16
(30) Не, к счастью никуда не вывожу, просто обрабатываю.