массовое перепроведение документов - как ускорить? #399654


#0 by profik777
В цикле проверяю документы на соответсвие условию.Те документы, которые соответсвуют условию перепровожу. Вопрос: если я по результатам проверки составлю список документов, которые нужно перепровести и потом, по этому списку перепроведу их -  ускорит ли это работу обработки? есть ли смысл применять транзакцию (по аналогии с записью большого кол-ва элементов в справочник). Спасибо
#1 by SMakcik
Перепроведение и так выполняется в транзакции, зачем она еще? Составлять список можно, но зачем лишние действия. Войди монопольно, для ускорения.
#2 by profik777
я хотел в цикле перебирать список документов, а сам цикл заключить в транзакцию.  Наверное таки не стоит.
#3 by ПодводныйТаракан
нет
#4 by МихаилМ
ускорит в транцакции порциями,размер порции устанавливается эмпирически
#5 by dimzh
- не ускорит по причине приведенной  SMakcik в . Ускорит, если ты будешь в транзакции удалять, а потом ее отменишь
#6 by Chai Nic
На sql2000 может реально ускорить выполнение реконнекта через каждый десяток документов. Для этого документы как раз и есть смысл предварительно поместить в список, так как выборка при реконнекте слетает.
#7 by profik777
можно подробнее?  я не совсем уловил
#8 by Chai Nic
В sql2000 есть баг с неочисткой временных таблиц, который на 1с влияет таким образом, что каждый последующий документ проводится дольше предыдущего. И так до реконнекта. В 1с++ у объекта ODBCRecordSet есть метод ReconnectNative, который разрывает соединение с sql-сервером и сразу же его восстанавливает. При этом все открытые курсоры (выборки 1с) естественно закрываются. Так что нельзя внутри цикла ВыбратьДокументы делать реконнекты. Для перепроведения в цикле с реконнектами используют список значений(или таблицу значений), который предварительно заполняют ссылками на нужные документы. Поскольку список значений - это объект в памяти, а не на сервере, то разрыв sql-соединения на него не влияет.
#9 by Mikeware
Через десяток - смысла не имеет. (ну разве что это документы с офигительными временными расчетами и т.п.) Как показала практика, 20-30-50-70-100 (в стандартных пофигурациях) отличаются ненамного. У меня - 60 РеконнектНатив - не у ОДБСРекордсет, а у ДатаБэйс.. И курсоры открытые закрывать надо... :-)
#10 by Злопчинский
Считаю, что - неверно. Неужели 10 ударов молотком по гвоздю будут занимать то же самое время что и ударил по гвоздю, положил молоток, взял гвоздь, взял молоток, ударил по гвоздю... ????
#11 by profik777
Chai Nic   - большое спасибо :-)  !!!
#12 by IOL
Для ускорения, если документы одного вида и есть алгоритм как именно надо править движения, есть смысл задуматься что бы не перепроводить, а именно править движения/проводки, но это не всегда возможно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям