Дабы не плодить темы, и небыло возможности отсылки к этой, и всем, от текущей даты до даты последнего перед моим сообщения, решил поднять ее...
Вводная:
Карточек - 13005
Штрихкодов ~ 15500
База, совершенно пустая, после закрытия смены удалены все файлы, кроме персонала, и созданы с помощью /i заново.
Конвертер - DBF.
Грузятся только карточки товаров, классификаторы, штрихкоды, персонал. Ничего лишнего, ни налогов, ни скидок.
Кассы две, а дальше, самое интересное: на одной загруза с полной заменой ~15 минут, на другой - более 30, и при этом, частенько даже не завершается совсем, вылетает ошибка во время выполнения 216... Не всегда, через раз...
Диск проверен, на железном уровне MHDD, на логическом - Scandisk и NDD, все чисто... Память протестировал, все ОК. Автоэкзек и конфиг абсолютно индеинтичен на обеих кассах, ну, кроме имени папки расшаренной на сервере... Копирование по сети, вполне быстрое, я бы сказал - мгновенное. Железки одинаковые.
Х.З. - куда еще копать???
Да, и еще наблюдение - скорость загрузки неравномерная, первые 2-3 тысячи карточек пролетают очень быстро, не успеваю от центраньного компа после выгрузки, до кассы дойти, уже вторая тысяча к концу подходит, а дальше все медленнее и медленнее... К концу, наверное пара карточек в секунду... Если совсем не вылетит.
Да, кстати, смартдрайв или что-то аналогичное не загружено...
Но, все равно создается впечатление, как будто какой-то буфер переполняется...
Я сам 1С-ник, и у меня возникает ассоциация с транзакциями в 1С - когда мне например, надо обработать большой объем данных, я это делаю в транзакции, с промежуточной фиксацией, типа того:
Сч = 0;
НачатьТранзакцию()
//Здесь цикл
Сч = Сч +1;
Если Сч%РазмерТранзакции = 0 Тогда
ЗафиксироватьТранзакцию();
НачатьТранзакцию();
КонецЕсли;
//Здесь конец цикла
ЗафиксироватьТранзакцию();
В этой конструкции все зависит от переменной РазмерТранзакции - пока в цикле все крутися и количество проходов(Сч) не делится без остатка на РазмерТранзакции, все происходит в ОЗУ... Как только разделилось - происходит запись на диск, всего, что было в ОЗУ. Тоесть, если операция тяжеловесная - то, может получиться так, что размера ОЗУ может и нехватить для сохранения многих операций, и к концу интервала между транзакциями прога будет тормозить, пока транзакция не будет зафиксирована и ее результаты не будут записаны на диск, с очисткой ОЗУ... Чем тяжелее операции, тем чаще надо фиксировать транзакцию(должен быть меньше размер переменной РазмерТранзакции)...
Здесь такое впечатление, что все происходит в одной транзакции, без промежуточных фиксаций... Сначала, пока память пустая, все быстро крутится, по мере ее заполнения(ЧЕМ, блин???!!!), все замедляется, если совсем не встает... Может это где-то настраивается? Или у меня что-то неправильно настроено? Подскажите, плиз...