Влияет ли транзакция на скорость создания и проведения доков ? #120587


#0 by Плюшкин
Влияет ли транзакция на скорость создания и проведения доков ?Обработка создает кучу документов и потом из проводит.Документовпримерно 40 штук и в каждом по 15 колонок (из них 10-числовые) и 2000 строк табличной части.При проведении происходит только движение по регистрам(каждая строка дока-движение по двум регистрам).Других изменений типа периодич.реквизитов справочников и т.п. в базе не происходит.Расчет регистров также не происводится.Повлияет ли вызов транзакции на скорость ?
#1 by novice
смотря как ты сделаешьесли сначала в транзакции создаешь и записываешь документы,а затем скопом их проводишь, то думаю, выиграешь по скоростину а если создаешь док, затем его проводишь, и т.д. то не будет.ведь при проведении транзакция стартует неявно (ЖКК).
#2 by Плюшкин
Если из обработки буду только создавать и записывать,то есть ли ограничение на количество создаваемых доков ? И если есть,то сколько ?
#3 by KAPACb
1. Транзакция, естественно, увеличивает скорость.2. Чем больше в незафиксированной транзакции ты делаешь, тем все медленнее будет.Поэтому если у тебя много доков, или в доках много строк, то с какой-то периодичностью фиксируй транзакцию и все. Шаг фиксации определишь методом тыка.Это может быть 10-50-200 и т.д. доков.
#4 by echo
При выполнении проведения 1С сама начинает транзакцию, так что нет никакого смысла делать это явно. Вызов метода НачатьТранзакцию в 1С имеет смысл только тогда, когда надо в цикле пройтись, например, по элементам справочника, если этих элементов много, и поменять значение какого - нибудь реквизита. Тогда это действие за счет транзакции выполниться быстрее.
#5 by jurii
Если стартовать транзакцию при создании и записи доков (и фиксировать после 50-100), а потом при проведении скопом (так же с фиксацией через 50-100), то будет очень большой выигрышь по времени.А то, что 1С сама начинает транзакции для проведения каждого документа, дак она же и отменяет его при окончании проведения.
#6 by echo
Создать документы в транзакции, но не проводить их - это я согласен, будет выигрыш, если только время транзакции при этом не превысит времени ожидания блокировки таблиц у других пользователей. Тут уже надо соотносить выигрыш и проигрыш. Но открывать транзакцию и проводить внутри нее документы - это спорный момент. При этом что получается - вложенная транзакция? Вложенная транзакция - сам по себе спорный момент. Непонятно, как ее понимать. Если документ провелся, значит транзакция зафиксирована. А если в момент после фиксации вложенной транзакции происходит сбой до фиксации внешней транзакции? В общем мое мнение - надо использовать метод НачатьТранзакцию так, как описано в руководстве.
#7 by Chai Nic
ИМХО все вышесказанное существенно только для dbf-версии. В sql-версии транзакции на скорость практически не влияют - и смысл транзакций именно в атомарности действий.
#8 by echo
Смысл транзакции не только в атомарности. Транзакция - это ещё и единица восстановления, единица логической целостности БД, единица долговечности.
#9 by Плюшкин
Эта для ДБФ.Значит буду в транзакции брать по 100 доков(в доке по 2000 строк)
#10 by Chai Nic
"единица долговечности."Это то тут при чем?? По-твоему, данные, записанные вне транзакции, могут испортиться со временем? :-)Транзакция - это изменение состояния базы данных, которое или полностью выполняется, или полностью не выполняется. К логической целостности транзакция отношение имеет весьма опосредованное. Внутри транзакции можно такую же фигню наворотить в базе, как и без транзакции. Другое дело, что транзакция дает возможность сохранить логическую целостность - но не гарантию.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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