zVlad wrote:Что касается нужности или не нужности версионности. Попробуйте провести опрос среди прикладных программеров. Вы узнаете что 80-90% даже не в курсе существования уровней как таковых. Так что доказывать или опровергать нужность или ненужность того о существовании чего большинство участников процесса даже не подозревают - совершенно бессмысленное занятие.
Именно. То, что большинство разработчиков не в курсе существования уровней изоляции совершенно не означает, что они появились зря. То же самое с версионностью. Её наличие только добавляет причин не знать о том, что такой зверь вообще бывает. Идеально - нужно только два режима работы - полная изоляция, и полная изоляция + readonly. Как только появится удовлетворительное по скорости более-менее универсальное алгоритмическое решение для обеспечения идеальной сериализуемости, понятие уровней изоляции просто исчезнет.
Кстати, интересен вопрос: как можно ощутить, измерить (потрогать) наличие (или отсутствие) версионности, если приложение написано исходя из принципов блокировочника? Не даст ли в этом случае версионность негативного эффекта?
Конечно, есть масса ситуаций, когда приложение, правильно работающее на блокировочном уровне изоляции, будет работать иначе на аналогичном версионном уровне изоляции. Причём "иначе" - не всегда означает "правильно". Некоторые варианты неправильного поведения мы как раз и рассматривали в последней дискуссии о write consistency в Oracle. SQL Server или DB2 в большинстве похожих ситуаций, на том же уровне изоляции отработают безупречно. Т.е. кое-какие вещи при переходе на версионность придётся переделать, иначе будут ошибки.