SA Шпаргалка

Все ответы в 2 клика

Продвинутый

В чем разница между Пессимистичной и Оптимистичной блокировкой?

Пессимистичная блокировка:
Мы предполагаем, что конфликт точно будет. Транзакция А читает строку и сразу блокирует ее на уровне БД (SELECT ... FOR UPDATE). Транзакция Б ждет, пока А не сделает COMMIT.
Минус: Медленно, возможны дедлоки.

Оптимистичная блокировка:
Мы предполагаем, что конфликта не будет. Строка не блокируется. В таблицу добавляется колонка version.
При обновлении проверяем: UPDATE ... WHERE id=1 AND version=1. Если Транзакция Б успела обновить строку раньше, версия стала 2, и Транзакция А получит ошибку (0 обновленных строк) и должна повторить попытку.
Плюс: Очень быстро, нет блокировок БД.

Сложная тема? Разберём на мок-интервьюЗаписаться на менторство →

Другие вопросы темы «Блокировки»

Ещё вопросы раздела «SQL и БД»

Все вопросы раздела «SQL и БД»