|
Скорость записи в регистр накопления падает по мере увеличения количества записей | ☑ | ||
---|---|---|---|---|
0
mikhailovaew
16.06.17
✎
17:47
|
1С 8.2. Запросом получаю данные, 50000 строк. Построчно добавляю записи в регистр накопления. При этом первые несколько сотен записей производятся моментально, но каждая последующая запись делается медленнее предыдущей, и после 20000 это уже очень заметный лаг. Можно ли с этим как-то бороться?
|
|||
1
Волшебник
модератор
16.06.17
✎
17:48
|
фиксируй транзакцию каждые 100 записей
|
|||
2
Fragster
гуру
16.06.17
✎
17:48
|
приведи код
|
|||
3
mikhailovaew
16.06.17
✎
17:50
|
Выборка = Результат.Выбрать();
Кол = Выборка.Количество(); Сч = 0; Пока Выборка.Следующий() Цикл Сч = Сч + 1; Движение = Движения.МойРегистр.Добавить(); ЗаполнитьЗначенияСвойств(Движение,Выборка); Если Сч%100 = 0 Тогда Состояние("СФРВ: загружено "+Сч+" строк из "+Кол); КонецЕсли; КонецЦикла; Движения.МойРегистр.Записать(); |
|||
4
Джинн
16.06.17
✎
17:50
|
(0) Через набор записей добавляете?
|
|||
5
mikhailovaew
16.06.17
✎
17:50
|
то есть Движения.МойРегистр.Записать() делать через каждые 100 записей?
|
|||
6
mikhailovaew
16.06.17
✎
17:50
|
(4) через свойства Движения самого документа-регистратора
|
|||
7
Fragster
гуру
16.06.17
✎
17:51
|
а на какой строке тормозит? Движение = Движения.МойРегистр.Добавить();?
|
|||
8
Лефмихалыч
16.06.17
✎
17:52
|
не удивительно.
надо Записать(ложь). |
|||
9
mikhailovaew
16.06.17
✎
17:52
|
(7) нет, именно в процессе добавления, еще ДО записи
|
|||
10
Fragster
гуру
16.06.17
✎
17:52
|
(8) отнюдь
|
|||
11
mikhailovaew
16.06.17
✎
17:52
|
(8) до записи еще не доходит в момент лага
|
|||
12
Fragster
гуру
16.06.17
✎
17:53
|
(9) а я как написал?
|
|||
13
Волшебник
модератор
16.06.17
✎
17:53
|
(5) Сделай 10 документов по 5000 записей в каждом
|
|||
14
Лефмихалыч
16.06.17
✎
17:53
|
(11) так у тебя добавление в набор тормозит?
|
|||
15
Лефмихалыч
16.06.17
✎
17:53
|
в набор можно тупо Загрузить(Выгрузить())
|
|||
16
mikhailovaew
16.06.17
✎
17:53
|
(7) (11) там всего 2 строки: добавить и заполнить значения. в какой-то из них тормозит все сильнее по мере добавления в набор
|
|||
17
mikhailovaew
16.06.17
✎
17:54
|
(15) именно так сначала и было, потребовали вывести индикацию что происходит, ибо задумается база на час
|
|||
18
Лефмихалыч
16.06.17
✎
17:55
|
(16) какую-то ты фигню рассказываешь
|
|||
19
mikhailovaew
16.06.17
✎
17:55
|
(18) не было б фигни - не было б вопроса
|
|||
20
Лефмихалыч
16.06.17
✎
17:56
|
(19) результат замера производительности покажешь?
|
|||
21
mikhailovaew
16.06.17
✎
17:56
|
Вот это вот Состояние("СФРВ: загружено "+Сч+" строк из "+Кол) как раз четко показывает, что первые сотни добавляются моментально, а дальше все медленее и медленнее. После 20 000 по нескольку секунд, после 30 000 уже почти по минуте
|
|||
22
mikhailovaew
16.06.17
✎
17:56
|
визуально видно)
|
|||
23
Лефмихалыч
16.06.17
✎
17:58
|
(22) визуально - это фигня и есть. Замер покажи, потом будут разговоры
|
|||
24
mikhailovaew
16.06.17
✎
17:58
|
я так понимаю, Вы с данной проблемой не сталкивались
|
|||
25
Лефмихалыч
16.06.17
✎
17:58
|
любая оптимизация обязана начинаться с замера производительности, а не с обговления кода
|
|||
26
Лефмихалыч
16.06.17
✎
17:59
|
(24) ты овощей за жизнь столько не съела, со скольким количеством разных, и таких - тоже, проблем сталкивался.
Замер сделай, потом поговорим |
|||
27
mikhailovaew
16.06.17
✎
18:01
|
(25) 96% на строке Движение = Движения.МойРегистр.Добавить();
что это дает? |
|||
28
mikhailovaew
16.06.17
✎
18:01
|
уже 99%
|
|||
29
Лефмихалыч
16.06.17
✎
18:02
|
(27) это значит, что дело не в твоем коде, а в твоем железе.
|
|||
30
Лефмихалыч
16.06.17
✎
18:02
|
хоттяя... верни Загрузить(Выгрузить()) и повтори замер
|
|||
31
mikhailovaew
16.06.17
✎
18:04
|
пока не могу. час грузить, ему осталась еще 5000 записей. пусть догрузит, потом верну и померяю.
|
|||
32
mikhailovaew
16.06.17
✎
18:07
|
(30) а что там мерить? сколько по времени займет строка Загрузить и будет ли это быстрее построчного обхода?
|
|||
33
mikhailovaew
16.06.17
✎
18:10
|
(13) то есть падение производительности при росте количества записей - это нормально и иначе как дроблением регистраторов проблему не решить?
|
|||
34
youalex
16.06.17
✎
18:26
|
(0) Памяти сколько? вообще, свободно, и у приложения при замедлении? база файловая/серверная?
|
|||
35
H A D G E H O G s
16.06.17
✎
18:49
|
Я думаю, чудес не бывает и мы видим не весь код
|
|||
36
H A D G E H O G s
16.06.17
✎
18:49
|
Я даже могу подключиться и потыкать автора
|
|||
37
ILM
гуру
16.06.17
✎
19:00
|
Грузите порциями по 10 тыс записей. Пример кода есть в УПП, запись порциями в регистры затрат при проведении РСВ.
|
|||
38
mexanik_96
16.06.17
✎
19:04
|
(25)+100500 автор, ты бы хоть замер профайлером сделал если клиент-сервер, если фб тогда тж
|
|||
39
Fragster
гуру
17.06.17
✎
14:26
|
не кончается ли у автора оперативка?
|
|||
40
rphosts
17.06.17
✎
14:39
|
(3) сдается мне, что пока не вернуть управление клиенту область панели состояние обновлено не будет, а в этом коде возврата на клиента как-то не предвидится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |