IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Оптимистические и пессимистические блокировки

Блокировками (locks) называются механизмы, применяемые для управления параллельными изменениями данных.

Существует два типа блокировок:

оптимистические блокировки (optimistic locks) — предотвращают возникновение конфликтных ситуаций, выполняя при необходимости откат транзакции (такие блокировки в стандарте SQL-92 не поддерживаются);
пессимистические блокировки (pessimistic locks) — предотвращают возникновение конфликтных ситуаций, блокируя одновременный доступ к данным для одновременных транзакций .

Блокировки используются для приостановки выполнения одних SQL-операторов, пока выполняются другие.

Если при пессимистической блокировке выполнен SQL-оператор, который может вызвать конфликтную ситуацию для другого SQL-оператора, то выполнение второго SQL-оператора будет приостановлено. При оптимистической блокировке могут выполняться любые SQL-операторы, но в случае возникновения конфликтной ситуации все изменения будут потеряны.

Оптимистическая
Оптимистические блокировки предполагают, что множество транзакций могут завершиться без влияния друг на друга, и таким образом могут выполнятся без блокировок тех ресурсов, на которые они влияют. Перед коммитом, каждая транзакция проверяет, что ни одна другая транзакция не модифицировала ее данные. Если проверка выявила конфликтующие модификации, транзакция, находящаяся в состоянии коммита, откатывается.

Пессимистическая
Пессимистические стратегия подразумевает, что параллельные транзакции будут конфликтовать каждая друг с другом, и требует блокировки ресурсов после их чтения, а также ее снятия только после того, как приложение завершило использование данных.
Hibernate предоставляет механизмы для реализации обеих стратегий блокировок в вашем приложении.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *