Имя: Пароль:
1C
 
как ускорить процесс записи элементов в справочник?
0 Rick
 
08.12.05
12:55
нужно записать 250 000 элементов в справочник номенклатуры. выполняется ~18 часов ... хотелось бы ускорить процесс ...
Может стоит применить транзакции?
1 ymv
 
08.12.05
12:57
Можно, только периродически создавать новую транзакцию, чтобы она не разросталась до безумных размеров.
2 Rick
 
08.12.05
12:58
Как думаете, сколько оптимально (хотя бы примерно): 10, 100, 1000 элементов в одной транзакции? С чего начать тестировать?
3 Rovan
 
гуру
08.12.05
13:23
(2) 100, 250, 500
4 ZolotarevAA
 
08.12.05
13:26
(2) Столько элементов нужно записывать каждый раз, что ли?
5 Vozhd
 
08.12.05
13:35
(1) А не поделитесь ли данными замеров скорости записи в зависимости от количества элементов в транзакции (ну и от отсутствия транзакций)?
6 Rick
 
08.12.05
13:36
(4)да. Сколько записывать за 1 раз. Там стоит сервер с 4 Гб оперативки.
7 romix
 
модератор
08.12.05
13:41
В 7-ке я пишу порциями по 100 или по 1000 в одной транзакции.

НачатьТранзакцию() / ЗафиксироватьТранзакцию()

Скорость записи при этом растет на порядки.
8 Vozhd
 
08.12.05
13:46
(7) А 7-ка и 8-ка работают на одном и том ж движке?
9 КПСС
 
08.12.05
13:51
(8) упс  )))
10 ZolotarevAA
 
08.12.05
13:58
(6) Не уверен, что у всех элементов хоть что-то меняется. Может быть, не каждый элемент надо записывать?
11 Rovan
 
гуру
08.12.05
13:59
(8) принцип Транзаций аналогично реализован
12 Rovan
 
гуру
08.12.05
14:00
(10) давно на курсах телепатов учишься ? :-)
13 Vozhd
 
08.12.05
14:04
(11) А можете кратенько рассказать за счет чего добавление транзакции ускоряет запись? Интересно чисто для общего развития.
14 ZolotarevAA
 
08.12.05
14:05
(12) На курсах не учусь. Дорого.

А людей, которые вместо того, чтобы проверить, а надо ли что-то делать, просто делают это, очень много.

Я один раз на такую вещь напоролся. Иэлементов там бало около всего-то 15 000 (правда справочник тяжелый). Хватило на раз.
15 ZolotarevAA
 
08.12.05
14:06
(13) За счет того, что порции действий крупнее. Сначала все делается на локальной машине, потом большой кусок отправляется в БД. Вроде так.
16 zxspectrum
 
08.12.05
14:10
(15) Т.е. Лок.машина работает буфером? А если БД на той же машине где и выполняются транзакции, то ускорится процесс?
17 PR
 
08.12.05
14:12
Для доков опытно-экспериментальным путем определил примерно 250, для справочников можно и 1000
18 Vozhd
 
08.12.05
14:14
(15) Не могли бы Вы описать порядок действий, при котором можно увидеть появление этого самого буфера, в которых собираются эти порции?
19 Rovan
 
гуру
08.12.05
14:17
(18) Вот так вопрос ! НАСТОЩИЙ ВОПРОСИЩЕ !
20 ZolotarevAA
 
08.12.05
14:24
(16) Ускорится.
21 ZolotarevAA
 
08.12.05
14:25
(17) Не согласен. Зависит от нагруженности объектов.
22 ZolotarevAA
 
08.12.05
14:27
(18) Вопрос из разряда:

- "Какой у вас компьютер?"
- "Самсунг" (надпись на мониторе).
23 Rick
 
08.12.05
14:31
Я вот все думаю по поводу (10). Это был бы наилучший вариант ... только вот как узнать изменился элемент или нет. Что мне, новый реквизит "контрольная сумма" создавать? :)))
24 Rick
 
08.12.05
14:36
хотя это (23) относится уже скорее не к 1с :))
25 Rovan
 
гуру
08.12.05
14:44
(23) Если Записать() отработал без ощибок, то всё хорошо. (и если транзакция закрылась)
26 PR
 
08.12.05
14:44
(21) Согласен, но я про усредненные значения
27 ZolotarevAA
 
08.12.05
14:52
(23) "...Лучше сейчас пАлдня потерять, потом за пять минут долететь." (с) ("Ноги, крялья, хвост").

Подумай, подумай.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.