Материал: Л-6 - Сеансы, транзакции и блокировки

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Задание блокировок в транзакциях

При параллельной работе нескольких пользователей необходимо придерживаться следующей стратегии:

транзакция, предназначенная для извлечения кортежа, должна наложить S-блокировку на этот кортеж;

транзакция, предназначенная для обновления кортежа, должна наложить Х-блокировку на кортеж.

Блокировки в транзакциях задаются неявно:

запрос на извлечение кортежа – неявный запрос с S- блокировкой;

запрос на обновление кортежа – неявный запрос с Х- блокировкой кортежа.

Проблема потерянных обновлений

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

Сучетом применения протокола блокировки для чередующихся операций складывается следующая

ситуация

Проблема несогласованных данных с учетом блокировок

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

Проблема несовместимого анализа с учетом блокировок

Ситуация, рассмотренная выше, с учетом блокировок будет развиваться следующим образом.

Тупиковая ситуация

Две транзакции одновременно находятся в состоянии ожидания, причем для продолжения работы каждая ожидает прекращения выполнения другой транзакции.

Транзакции не могут самостоятельно обнаружить тупик, поэтому его должна обнаружить и разрешить система.

Основа обнаружения тупиков – построение графа состояний ожидания транзакций.