Пессимистичная блокировка резервирует доступ к данным до завершения транзакции. Оптимистичный контроль позволяет работать без длительного захвата, но проверяет, не изменились ли данные перед сохранением.
Что такое пессимистичная и оптимистичная блокировка?
Пессимистичная блокировка резервирует доступ к данным до завершения транзакции. Оптимистичный контроль позволяет работать без длительного захвата, но проверяет, не изменились ли данные перед сохранением.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Пессимистичная блокировка резервирует доступ к данным до завершения транзакции. Оптимистичный контроль позволяет работать без длительного захвата, но проверяет, не изменились ли данные перед сохранением.
Пессимистичный пример — SELECT FOR UPDATE с последующим изменением в той же транзакции. Он удобен при высокой цене конфликта, но увеличивает ожидания и риск deadlock.
Оптимистичный пример — UPDATE с условием по version и увеличением версии. Если обновлено ноль строк, пользователь или код должен разрешить конфликт. Оптимистичный контроль не означает, что СУБД вообще не использует блокировки: сама запись всё равно требует внутренних механизмов синхронизации.