Имя: Пароль:
1C
1С v8
Сократить время загрузки номенклатуры
0 mcfev
 
16.04.13
16:31
График и время загрузки http://plasmon.rghost.ru/45330010/image.png
В пустую базу УТ грузит 29 000 записей в течении более 2 дней.
Транзакция есть.

Посоветуйте, что можно сделать?

ps на сколько помню происходит загрузки и сохранение всех записей регистра сведений (на графике именно оно и изображено по Y)
1 butterbean
 
16.04.13
16:32
можно код сюда выложить
2 rutony
 
16.04.13
16:36
(0)
Как грузит? В какую УТ? Какая платформа? Какое железо?

зы. ну сколько можно такие бестолковые темы создавать...
3 mcfev
 
16.04.13
16:39
Повторы = 0;
Добавленно = 0;
   
НачатьТранзакцию();
Для Каждого Стр Из Товары Цикл
   Если ЕстьНоменклатура(Стр.No) Тогда
       Повторы = Повторы + 1;
   Иначе
       ДобавитьЭлемент(Стр, Идентификаторы, ПеременнаяЗаполнятьОписание, НовыйЭлементЦен);
       Добавленно = Добавленно + 1;
   КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();



Процедура ДобавитьЭлемент(Элемент, Идентификаторы, ПеременнаяЗаполнятьОписание, НовыйЭлементЦен)
   НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
   НовыйЭлемент.Артикул = Элемент.No;
   //также и все остальные значения
   НовыйЭлемент.Записать();
КонецПроцедуры



Товары - ТаблицаЗначений
4 mcfev
 
16.04.13
16:42
(2) Простите! Просто хотел найти совета в общем, а не в конкртном случае.

Как грузит? - внешняя обработка
В какую УТ? - Управление торговлей, редакция 11.1 (11.1.1.5)
Какая платформа? - 1С:Предприятие 8.2 (8.2.17.169)
Какое железо? - Dual-Core 2.6Ггц, 2 гб оперативной
5 Нууф-Нууф
 
16.04.13
16:43
что в ЕстьНоменклатура?
6 Eugene_life
 
16.04.13
16:44
(0) купи у Мани обработку
7 mcfev
 
16.04.13
16:44
(5) Запрос на проверку по артикулу
8 hhhh
 
16.04.13
16:44
(4) ну вот это ЕстьНоменклатура() тормозит

надо сразу всю номенклатуру найти в одном запросе, а потом по списку ненайденных добавлять новую.
9 Aleksey
 
16.04.13
16:44
Вот осталось включить замер производительности и понять что тормозит
10 wms
 
16.04.13
16:45
перед записью объекта вначале

обменданными.загрузка=истина;
11 MORRoz
 
16.04.13
16:45
Чтобы получить совета в общем или конкретном случае - необходимо подробно описать ситуацию.

29 000 записей - это впринципе совсем не много, и должно загружаться за пару минут.

Внешняя обработка грузит откуда? Как быстро происходит чтение из источника? Если убрать транзакцию - время изменится?
Замер производительности что показывает, на какой процедуре дольше всего происходит выполнение? В файловом/в серверном вариантах есть различия? Загрузка под полными правами?

Это минимум информации.
12 Fragster
 
гуру
16.04.13
16:47
убери транзакцию
13 Fragster
 
гуру
16.04.13
16:48
грузи в 4 потока
14 Kreont
 
16.04.13
16:48
загружал на днях 5тис. за пару минут, поиск по коду на уникальность, и без транзакций
15 MORRoz
 
16.04.13
16:48
Не верю, что даже запрос в цикле с поиском по артикулу может выполняться 2 дня для 29 тыс. строк....
Даже если не запросом, а обходить выборку справочника - должно быть быстрее =)
16 Fragster
 
гуру
16.04.13
16:49
(15) там накладные расходы на поддержку транзакции, которая все больше и больше
17 mcfev
 
16.04.13
16:52
(8) (9) Вот как раз таки по замеру производительность и смотрел, ЕстьНоменклатура() за милисекунды.

А вот ОбщийМодуль.УправлениеДоступомСлужебный.Модуль - НаборЗаписей.Записать() тормозит (представленно на графике по Y)
18 mcfev
 
16.04.13
16:53
(11) Внешняя обработка грузит откуда? - XML
Как быстро происходит чтение из источника? - минуты 2
Если убрать транзакцию - время изменится? - без транзакции раза в 2 медленнее
19 Kreont
 
16.04.13
16:58
На время загрузки отключай еще такое:
+из конфигуратора все логирование кроме ошибок
+проверь что версионирование не включено
+отключить все регл.задание, особенно слияние и построение полнот.поиска
20 hhhh
 
16.04.13
16:58
(17) тогда (10) читайте.
21 ilkoder
 
16.04.13
17:02
(10) +100500
22 Fragster
 
гуру
16.04.13
17:04
если RLS есть, то грузить под пользователем с полными правами
23 Fragster
 
гуру
16.04.13
17:04
или установитьПривилегированныйРежим какой-нить
24 mcfev
 
16.04.13
17:08
(10)(20)(21) "обменданными.загрузка=истина;"
Переменная не определена (обменданными)

Можно подробнее
25 Fragster
 
гуру
16.04.13
17:09
НовыйЭлемент/J,vtyLfyysvb
26 wms
 
16.04.13
17:11
Процедура ПередЗаписью(Отказ)
   ОбменДанными.Загрузка=истина;
конецПроцедуры

или в обработке перед
объект.ОбменДанными.Загрузка=истина;

объект.записать();
27 IVT_2009
 
16.04.13
17:14
Попробуйте базу протестировать (проверить целостность и перевыгрузить) , подобного рода фигня была когда была повреждена одна из таблиц. Причем все хорошо было только тормозило на подобного рода операциях.
28 Нууф-Нууф
 
16.04.13
17:16
1. загрузить данные в ТЗ.
2. проиндексировать ТЗ
3. выполнить запрос к ТЗ и соединить со справочником номенклатура по артикулу
5. обработать результат, создать номенклатуру при необходимости.
29 mcfev
 
16.04.13
17:17
(10)(20)(21) + (23)
т.е.

объект.ОбменДанными.Загрузка=истина;

объект.записать();

+

УстановитьПривилегированныйРежим(Истина);

сократили время с 55 секунд до 47 секунд за одну запись ((
30 mcfev
 
16.04.13
17:18
(27) База чистая на старте, а время с каждым разом росло.
31 Fragster
 
гуру
16.04.13
17:19
(29) включи отладку на сервере и сделай замер
32 mcfev
 
16.04.13
17:21
(31) чего именно замер?
33 mcfev
 
16.04.13
17:21
(31) Все тоже самое так и тормозит
34 Fragster
 
гуру
16.04.13
17:23
(32) загрузки первой 100 номенклатуры
35 Fragster
 
гуру
16.04.13
17:23
и вообще - сделаю удаленно за $$
36 Ахиллес
 
16.04.13
17:24
Жесть жестяная. (0) Если используешь транзакции, то их надо фиксировать каждые 100-500 (примерно) записей. Загнать 29 тысяч, а потом всё разом попытаться записать на 2 гигах оперативки... ну ты и садист :-)
37 wms
 
16.04.13
17:25
(29)15 % для тебя мало?
арендуй мощный сервак.
38 palpetrovich
 
16.04.13
17:26
обработка - нетленка небось, почему не пользуешься готовыми ?
39 wms
 
16.04.13
17:26
а простая интерактивная запись/gthtpfgbcm номенклатуры не тормозит?
40 mcfev
 
16.04.13
17:26
(35) хочу понять "почему", а не результат получить (если уж никак не получится то пусть как будет)
41 mcfev
 
16.04.13
17:27
(37) 15% это больше случайность чем реальные цифры
42 IVT_2009
 
16.04.13
17:28
Когда приходилось пачками удалять документы (тысячами ) фиксировал транзакцию через каждые 500 записей , иначе был подобный результат. Это правда было на УТ 77
43 Ахиллес
 
16.04.13
17:29
(42) А какая разница? Восьмёрка ещё больше памяти жрать будет, так, что 2 дня это чувак ещё легко отделался ;-)
44 H A D G E H O G s
 
16.04.13
17:32
Давай коннект, H A D G E H O G s придет на помосчь.
45 mcfev
 
16.04.13
17:32
Да я просто хочу понять зачем "ОбщийМодуль.УправлениеДоступомСлужебный.Модуль - НаборЗаписей.Записать()" сначала читает всю номенклатуру а потом (тут же) ее пишет. Именно этот процесс занимает такое количество времени. Остальные несовершенсва кода на замер производительности не влияют.
46 mcfev
 
16.04.13
17:34
(40) не мне же ей пользоваться ))
47 Fragster
 
гуру
16.04.13
17:34
(45) я думаю, там немного выше по коду написано, почему так
48 H A D G E H O G s
 
16.04.13
17:34
Открыл конфу, открыл ОМ ииии, не нашел УправлениеДоступомСлужебный.

Быть может, дело в том, что у меня типовая УПП и в ней нет такого копрокода?
49 H A D G E H O G s
 
16.04.13
17:35
(45) Счаст я надену телепатический обруч (на пузо) и сразу все тебе объясню.
50 mcfev
 
16.04.13
17:40
(48) Управлние торговлей - ОбщиеМодули - УправлениеДоступомСлужебный
(49) Вопрос и был "никто не знает почему/не сталкивался с таким"
51 H A D G E H O G s
 
16.04.13
17:43
Опять мимо, Акелла.
52 H A D G E H O G s
 
16.04.13
17:45
Нет (уже) такого модуля.
Но судя по артефактам в виде закомменченного куска в ОМ
СтандартныеПодсистемыПереопределяемый, такой модуль когда-то был.

Но нет теперь. Все, не успели. Аля-улю!

УТ 10.3.21.2
53 arsik
 
гуру
16.04.13
17:46
(52) У него Управление торговлей, редакция 11.1 (11.1.1.5)
54 H A D G E H O G s
 
16.04.13
17:47
Да сколько же их!
55 mcfev
 
16.04.13
17:47
(52) )))
Кто промахнулся??
56 Sammo
 
16.04.13
17:50
Грузить на сервере, без регистрации в планах обменаа в режиме ОбменДанными.Загрузка
57 H A D G E H O G s
 
16.04.13
17:51
Брррр, открыл УТ 11.
Конфигурация, созданная на погибель человечества.
58 arsik
 
гуру
16.04.13
17:57
В стандартной 11.0.9 "УправлениеДоступомСлужебный" нет.
59 grayshadow
 
16.04.13
18:07
а что за наборзаписей? какого регистра?
(у меня в УТ 11 7000 ном-ры создаются с 0, без ОбменДанными.Загрузка, за минут 15)
60 mcfev
 
17.04.13
11:40
(56) "без регистрации в планах обменаа" - это как??
61 mcfev
 
17.04.13
16:04
прошу прошения. сейчас поставил везде (у каждого элемента)

объект.ОбменДанными.Загрузка=истина;
объект.записать();

и все круто 29 минут.

Всем спасибо огромное за помощь!
62 grayshadow
 
17.04.13
16:04
РегистрСведений.ГруппыЗначенийДоступа
вот эта гадость появилась после обновления на 11.1
отрабатывает, даже если RLS не используется о_О
и реально тормозит загрузку
63 grayshadow
 
17.04.13
16:05
хотя ОбменДанными.Загрузка решает, да:)
64 Aleksey
 
17.04.13
16:16
гы, еще одно подтверждения что УТ11 для крупных фирм, :)
65 grayshadow
 
17.04.13
16:25
(64) + знающих толк в извращениях:)