Показать сообщение отдельно
Старый 29.04.2016, 11:25   #1  
johny77 is offline
johny77
Участник
 
31 / 27 (1) +++
Регистрация: 04.07.2006
Какой способ использование транзакции предпочтительнее.
Добрый день.

Имеется два способа использовать транзакцию. Вариант (А)
PHP код:
ttsbegin;
while(
setEnumerator.moveNext())
{
    ...
    
// выбор и обновление данных
}
ttscommit
Другой вариант (Б)
PHP код:
while(setEnumerator.moveNext())
{
    
ttsbegin;
    ...
    
// выбор и обновление данных
    
ttscommit;

Поскольку данные обновляются в одной транзакции, то вариант (А) предпочтительнее, поскольку откатывается вся транзакция.
В операторах ttsBegin/ttsCommit зашита дополнительная логика на уровне ядра системы, что тоже оставляет метод (А) более предпочтительным.

Некоторые разработчики используют метод (Б) аргументируя тем, что транзакция не блокирует базу. Но ведь как-то разносятся журналы ГК по 100 строк по разным модулям, накладные...

Может выбор должен зависить от магического алгоритма выбора и обновления данных. Но если алгоритм простой (выбор, клиента и обновление у него поля даже с обновлением глобальной адресной книги) считаю, что метод (А) предпочтительнее.

К какому методу склонны вы, обновление каких данных заставляло вас использовать метод (Б)?