|
Эффективный по времени способ создания справочника | ☑ | ||
---|---|---|---|---|
0
Мимохожий Однако
29.12.14
✎
20:49
|
Задачка немного теоретическая. Есть некоторая таблица значений с полями "Наименование" и "ДопРеквизит".
Способ 1. Перебираем ТЗ и для каждой строки используем СоздатьЭлемент(). Есть ли "волшебный" способ массового создания справочника Номенклатура быстрее Способа 1? |
|||
1
Aleksey
29.12.14
✎
20:51
|
да
НачатьТранзакцию() |
|||
2
Garykom
гуру
29.12.14
✎
20:56
|
(1) +1
+2 это прямая запись в таблицу (если sql сервер) |
|||
3
Мимохожий Однако
29.12.14
✎
21:00
|
Надо померить производительность. Вещь очевидная, но как-то не обратил внимания. (1),(2) спасибо
|
|||
4
karabas11
29.12.14
✎
21:30
|
(0) Распараллелить запись
|
|||
5
MrStomak
29.12.14
✎
22:15
|
(1), (2) У автора, суда по СоздатьЭлемент(), вовсе не dbf-ная семёрка.
|
|||
6
Garykom
гуру
29.12.14
✎
22:23
|
(5) эээ и что оба метода хотите сказать не работают? ))
|
|||
7
MrStomak
29.12.14
✎
22:28
|
(6) Нет, просто НачатьТранзакцию в 8ке не так сильно ускоряет. Прямо в sql или параллельная запись (тоже при sql) - это значительно изменит расклад.
|
|||
8
Мимохожий Однако
29.12.14
✎
22:44
|
Сделал замер в обработке. Нашел строку с максимальным временем. Это был запрос... в цикле. Поменял код.
Ускорилось раз в 10. А команда НачатьТранзакцию() дала минимальный эффект. (5) У автора восьмёрка )) |
|||
9
Garykom
гуру
29.12.14
✎
22:59
|
(7)(8) НачатьТранзакцию() и ЗафиксироватьТранзакцию() просто готовить нужно правильно...
типа вплоть до подбора оптимального кол-ва элементов записываемых в каждой транзакции... |
|||
10
Garykom
гуру
29.12.14
✎
23:01
|
(9)+ т.е. например если требуется записать 10 000 элементов то бесполезно писать их в одной транзакции
но вот если писать их кусками по 200-300 штук то ускорение в несколько раз будет )) |
|||
11
Мимохожий Однако
29.12.14
✎
23:02
|
(9)Я с этим не спорю. В моём частном случае важнее оказался мой кривой код. Рекомендации по разбивке понадобятся при больших объемах. Спасибо.
|
|||
12
MrStomak
29.12.14
✎
23:20
|
(10) ну дык это же семерочный глюк\фича с подбором элементов транзакции. Сейчас вот на 8ке перезаписывал 5000+ элементов в файловом варианте без транзакции - 17 сек, в одной транзакции - 15 сек, в транзакциях по 200 штук - все равно 15 сек. Все повторено по 10 раз, результат стабильный. Возможно, с созданием ситуация и другая, не знаю.
|
|||
13
Garykom
гуру
29.12.14
✎
23:45
|
(12) update с insert'ом не попутал? )) при перезаписи еще поиск идет - который все и сжирает в твоем случае
ЗЫ а подбор нужен когда оперативки не хватает, чтобы все в памяти держать - оптимальными кусками писалось сразу из памяти |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |