|
Не фиксируется транзакция в цикле |
☑ |
0
mvgfirst
11.10.16
✎
20:25
|
Есть некая база.
Написал простую обработку суть которой - помечать на удаление документы
Алогритм такой:
Запросом выбираем первых 500 документов без пометки помечаем и делаем запрос повторно. пока все документы не будут помечены.
Использую транзакции. Обнаружил интересный эффект:
Сперва сдела так:
НачатьТранзакцию
Цикл
ПометкаНаУдаление
ЗафиксироватьТранзакцию
НачатьТранзакцию
КонецЦикла
ЗафиксироватьТранзакцию
Обнаружил непонятное для себя поведение системы - транзакция не закрывается. Это видно даже по журналу регистрации
переписал на:
Цикл
НачатьТранзакцию
ПометкаНаУдаление
ЗафиксироватьТранзакцию
КонецЦикла
все нормально заработало.
В общем проблема как бы решена. Но мне не понять почему в первом варианте не отрабатывало закрытие транзакции??
Не исключаю что я что-то где-то недочитал в документации... хотя перед тем как писать и гуглил и СП читал ... несколько раз. Ответа нет, как и какого либо упоминания о циклах...
Везде только о вложенности транзакций... но у меня нет вложенности. ни в первом ни во втором варианте решения...
Кто-нибудь сталкивался с подобным? Или на лицо ошибка, если да то в чем заключается уточните пожалуйста....
|
|
1
RomanYS
11.10.16
✎
20:30
|
Кто-то что-то не договаривает...
Скорей всего ты "делал запрос повторно" до фиксации транзакции, хотя тогда бы, наверное, всё зациклилось на первой порции
|
|
2
GROOVY
11.10.16
✎
20:34
|
Зачем тут явная транзакция?
|
|
3
mvgfirst
11.10.16
✎
20:35
|
Такой вариант у меня тоже был )))
Сутки обработка якобы удаляла документы...
Но это было выявлено и устранено.
Запрос выполняется после фиксирования транзакции. Да и по журналу регистрации видно что документы помечаются на удаление и они разные... но все в одной транзакции состояние которой "незавершена"... Все это еще и приводило к разрастанию ТЕМП ДБ
|
|
4
mvgfirst
11.10.16
✎
20:37
|
(2) Ну на всяких там инфострартиках прочитал что использование транзакций ускоряет процесс удаления.
Дело не в том зачем она здесь а в феномене на который я "наступил". Т.е. если открыть транзакцию до цикла а потом в цикле закрыть и открыть новую то получается что транзакция не закрывается
|
|
5
MrStomak
11.10.16
✎
21:12
|
(4) быстрее оно только на файловой будет.
Поведение ненормальное, хотелось бы реальный код.
Может быть и глюк ЖР, нужно проверять через попытку отката
|
|