Читая этот вопрос, можно найти несколько упоминаний о том, что оптимистичный параллелизм обходится дороже во время разрешения из-за прерывания транзакций:
Оптимистическая и пессимистическая блокировка
Если вы выполняете один оператор обновления, обычно вы должны создать предложение where, чтобы гарантировать, что обновление не будет выполнено в случае конфликта. Т.е. вы должны включить исходное состояние строки в предложение where. Если кто-то другой редактировал строку и возникает конфликт, оператор обновления просто обновит нулевые записи из-за предложения where. Вам не нужно прерывать транзакцию, поскольку ваше обновление не внесло никаких изменений. Вы просто проверяете количество строк, измененных запросом (обычно это единица или ноль), и, если он изменил ноль, вы предоставляете пользователю решение о разрешении.
Если у вас нет нескольких операций, которые должны быть атомарными вместе с обновлением, я бы не подумал, что вам понадобится транзакция для одного обновления с предложением where для поддержки оптимистичного параллелизма. . Но, возможно, есть нюанс, который мне не хватает.
Вам нужна транзакция для одного оператора обновления с правильным выбором предложения where на основе исходного состояния строки (для оптимистичного параллелизма)?