Здравствуйте, GlebZ, Вы писали:
GZ>Итак, данные транзакции, если не использовать for update — отличаются только тем,
GZ>что более поздний update ты никогда не запишешь. Ну не могли как-то по другому обозвать.
Нет. Главное тем, что ты не видишь подтвержденных изменений других транзакций. Это очень удобно.
GZ><skiped...>
GZ>В результате получаем результат, где везде y=3. То есть в результате ни та, ни другая транзакция своего не добилась. Обломс.
И таких ситуаций можно придумать кучу. Потому как без блокировок на чтение или хотя бы таймстампы на чтение, согласованных данных не получишь.
Это как раз и есть Б@@@,Б@@@,Б@@@

. Но, это все равно лучше, чем read committed! Потому-что написать твой же пример
правильно в read committed транзакциях тоже проблема.
Вообщем я выбрал такой режим как режим по умолчанию для framework'а. В отдельных ситуациях прикладная программа может накладывать блокировки явно, если есть необходимость.
У него ИМХО больше преимуществ, чем у какого-либо другого. Ты так не считаешь, — приведи лучший режим.