блокировки" - никогда не пользовался столбцом @Version в своих @Enitity прежде. Правильно я понимаю, что все что сказано про эти типы блокировок важны лишь есть уровень изоляции read uncommited? То есть при стандартном для бд read commited это уже не актуально
Оптимистичная и пессимистичная блокировки на уровне приложения ортогональны уровням транзакций БД.
Не связаны между собой вообще никак
https://stackoverflow.com/questions/129329/optimistic-vs-pessimistic-locking
понятно, спасибо!
Если просто о сложном ,то пессимистическая держит Лок на что то , а оптимистическая запоминает состояние до и после и сравнивая определяет - была ли другая транзакция над этими же данными.
Пессимистичная - все, что читается транзакцией, блокируется до конца транзакции. Оптимистичная - все, что читается транзакцией, не блокируется до конца транзакции, а валидность изменений проверяется косвенными по отношению к СУБД средствами (без участия блокировок и механизмов транзакций) либо вообще не проверяется.
Есть разные виды оптимистичной...
В моем понимании это всегда будет сравнение двух состояний. т.е состояний в момент начала транзакции и в конце. Есть ли не так, то как, например?
Например, вообще никак. Это тоже вид оптимистичной блокировки
это интересный подход. Но почему тогда не назвать это пессимистической блокировкой, когда мы просто ничего не лочим. Т.е ее можно назвать и оптимистической, когда набор состояний для сравнения пустой и пессимистической, когда набор залоченных обьектов пустой
Потому что называют оптимистичной
Вообще, терминология и теория тут слабо развиты ввиду не сильной важности самой технологии, так что можно спорить долго. Мне кажется логично когда блокируешь называть пессимистичной, когда нет - оптимистичной. А далее разбираться в опт. как проверять наличие конфликтов транзакций.
Обсуждают сегодня