Как ускорить загрузку номенклатуры из DBF? #313399


#0 by livard
Есть файл с каталогом, нужно его вгрузить в 1С. В файле DBF 1 милл. 600 тыс. товаров... 1С загружает порядка 100 записей потом начинает тормозить... и далее в секунду по записи. Причем производительность компа(сервака) не влияет на скорость загрузки. База 1C/DBF.
#1 by ТелепатБот
#2 by mikecool
напрямую INSERT INTO ... SELECT FROM ....
#3 by Эльниньо
Транзакции используй
#4 by victuan1
+ Транзакции используй на каждую 1000 эл-тов и фиксируй порцию. Иначе при большой транзакции тоже будут тормоза в конце.
#5 by Злопчинский
каждый гвоздь заводите отдельной номенклатурой?
#6 by livard
запчасти.... каждую гайку :) транзакцию использую на каждые 400 эл. (пришел методом научного тыка) Больше нет вариантов?
#7 by Конь в пальто
прямым запросом выбирай
#8 by livard
А поподробней: как прямым запросом?
#9 by mikecool
см и кури описание команды INSERT
#10 by livard
Insert В таблицу DBF самой 1с-ки?
#11 by Конь в пальто
накуй ему инсерт, ему селект надо
#12 by livard
Сапасайте :) При такой скорости загрузки я проект до НГ не здам :( ADO?
#13 by Конь в пальто
ну в все отлично написано
#14 by livard
DAta= DBConn.Execute("Select * from [TOVAR2#DBF]"); {C:ADO_DBF.ERT}: Microsoft JET Database Engine: Не удается найти затребованный файл Memo Xbase.
#15 by Колхозник-внедренец
Проверяй код. Провел эксперимент: создал справочник "Большой", с длиной наименования = 100. Для заполнения взял такой код: Процедура Сформировать   Результаты: 21:20:42 300 ... т.е. загрузил миллион записей за 5 минут на средней паршивости компе. З.Ы: Размер DBF-файла справочника стал ~ 121 Мб, файла индекса ~ 42 Мб.
#16 by Эльниньо
+1. По 100 - самое то - проверено.
#17 by ado
Может у него на выборке тормозит, а не на записи?
#18 by livard
Получается он из DBF читает медленно, через хбазе?
#19 by Mikeware
получается, что надо посмотреть профайлером, на что уходит время...
#20 by Колхозник-внедренец
И читает из DBF быстро. Код проверяй.
#21 by Колхозник-внедренец
Да наверняка какой-нить поиск перебором затеял ...
#22 by livard
Твой код у меня с такой же скоростью отработал :) значит чтение. + новый элемент нужно помещать в существующую группу... (т.е.время на ее поиск..) +Создать доп. элементы доп. справочников (ед.,аналог)
#23 by leshikkam
я думаю что дело в реквизитах справочника. Скажи - сколько реквизитов с отбором и сортировкой (может только с сортировкой) и какого типа?
#24 by leshikkam
покажи код - может на 1С++ переложить получится? (могу попробовать)
#25 by Advan
Эээ - вы уверены что вам нужна 1с 7.7? это че там интересно за зоопарк на 600 тыс наименований...
#26 by Advan
так блин - там на 600 тыс наименований 1600 тыс?!!! мдя - один фиг это работать не будет - даже если 1с потянет - то люди точно не потянут...
#27 by КонецЦикла
>>порядка 100 записей потом начинает тормозить Бугога Ну если дело обстоит именно так, то я бы сделал доп. колонку в загружаемом файле - id, пронумеровал бы ее апдейтом или еще как и инсертом закинул бы в 1С Думаю за несколько минут взлетит
#28 by Advan
А вообще код выложи - возможно дело в поиске групп, записи и тд - у меня на миллион записей на слабенькой машинке за часа полтора грузиться - при этом идет запись в справочники и поиск
#29 by Advan
большее время занимает не чтение, а запись всетаки
#30 by livard
#31 by livard
В итоге научного тыка пришел к тому что: 1. по расписанию каждые 10 минут убиваются индексы, 2. Осуществляется автовход в 1с, восстанавливаются индексы 3. Из файла (по коду см.) берутся значения kol.txt = 10000 тысяч элементов num.txt = 300 элементов т.е. загружаем 10 тысяч по 300 через транзакции... потом выходим. убиваем индексы и заново.... на серваке удалось достич скорости ~ 60 тыс. элементов в час....
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С