|
Как ускорить запись элемента в справочник Ø |
☑ | ||
|---|---|---|---|---|
|
0
ScareCrow
19.09.06
✎
11:10
|
При массовой загрузке справочника на первом месте стои Спр.Записать()..
как можно ускорить это дело? p.s. при установке перед цикломзакрузки елементов НачатьТранзакцию(), а после цикла - ЗафиксироватьТранзакцию(); скорость возрасла с 1300 элементов в минуту до 1500 элементов в минуту.. |
|||
|
1
Бешеная Нога
19.09.06
✎
11:12
|
фиксируй транзакцию через каждые 100, 500, 1000 элементов,
нужное тебе число найдешь экспериментально |
|||
|
2
lalex23
19.09.06
✎
11:12
|
транзакцию через сколько фиксируешь?
база дбф или скуль? |
|||
|
3
ScareCrow
19.09.06
✎
11:14
|
(2)база скуль..
(1) хм.. а что так быстрее будет? |
|||
|
4
lalex23
19.09.06
✎
11:15
|
(3) вроде на скуле пофигу - транзакция или нет
быстрее на дбф в разы |
|||
|
5
ScareCrow
19.09.06
✎
11:15
|
Сейчас транзакция фиксируется 1 раз - после цикла..
|
|||
|
6
skunk
19.09.06
✎
11:19
|
еще можно память подчищать... тоже не много прибавит в скорости...
|
|||
|
7
lalex23
19.09.06
✎
11:21
|
(5) а скока элементов в цикле ВСЕГО?
|
|||
|
8
КонецЦикла
19.09.06
✎
11:22
|
2(4) Данунаф?
2(5) Уже все написали. По 100, 200 и т.п. элементов |
|||
|
9
ScareCrow
19.09.06
✎
11:23
|
для этого справочника 6 с половиной тысяч.. у самого большого - 90 тысяч..
|
|||
|
10
lalex23
19.09.06
✎
11:29
|
(8) по поводу пофигу скуля? ну я ж не утверждаю, попробовать не начем, просто где то слышал
(9) а чё их часто надо перегружать ВСЕ 90 тысяч? если не секрет - а нафиг? |
|||
|
11
ScareCrow
19.09.06
✎
11:33
|
(1) хм.. разница есть - но не большая.. в пределах сотни элементов в минуту
(10) ну не все.. загружаются только новые или измененные.. просто баз несколько - а справочная информация вбивается в одну.. |
|||
|
12
ScareCrow
19.09.06
✎
11:35
|
а если Стр.Записать() вынести за пределы цикла - что будет?
|
|||
|
13
lalex23
19.09.06
✎
11:37
|
(12) :)
НИЧЕГО не будет - буквально пройдёт цикл и запишется или последний или ошибку выдаст, смотря какая конструкция в цикле |
|||
|
14
КонецЦикла
19.09.06
✎
11:37
|
2(12) А вот это не надо :)
Покажи как фиксируешь транзакцию. |
|||
|
15
ScareCrow
19.09.06
✎
11:39
|
н1 = н1+1;
н=н +1; Если Н1>= 500 Тогда н1=0; ЗафиксироватьТранзакцию(); НачатьТранзакцию(); КонецЕсли; Состояние("Обрабатывается элемент "+н+"/"+ИЛТЗ.КоличествоСтрок()); КонецЦикла; |
|||
|
16
aKomper
19.09.06
✎
11:39
|
1С++
|
|||
|
17
ScareCrow
19.09.06
✎
11:43
|
для справочников где реквизитов мало, а элементов много - скорее всего так и сделаю.. у этого же 45 реквизитов..
|
|||
|
18
Чучундер
19.09.06
✎
12:04
|
Напиши условие вместо
Н1>= 500 такое (Н1-500) >= 0 - тоже даст некий прирост скорости именно на проверке условия - условие будет отрабатывать примерно на 10% быстрее |
|||
|
19
ScareCrow
19.09.06
✎
12:09
|
это условие примерно на сотой строчке замера...
|
|||
|
20
КонецЦикла
19.09.06
✎
12:11
|
2(15) Напиши еще перед циклом Начать и после цикла - Зафиксировать
А то что-то может потеряться |
|||
|
21
ScareCrow
19.09.06
✎
12:11
|
щас перепишу всякие НайтиПоКоду на прямые запросы.. ну наверно и все..
|
|||
|
22
Drovaru2
19.09.06
✎
12:16
|
Уважаемые,а где можно посмотреть такие хитрости как в (15) и (18), скажем так, более полным списком с процентом прироста? 1С v7.7 релиз 25.
P.S. исключая мИсту... там уже усё прочитал |
|||
|
23
КонецЦикла
19.09.06
✎
12:24
|
2(21) Это еще зачем? Ну если в целом для всех - может быть...
2(22) Если все прочитал - значит все и так знаешь :) |
|||
|
24
Vacony
19.09.06
✎
12:29
|
Думается кроме Танзакций было бы не плохо код увидеть - тогда можно сказать - есть там что оптимизировать или нет.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |