- •Транзакции и целостность базы данных, параллелизм
- •Транзакции
- •4 Свойства транзакций:
- •Восстановление
- •Шаги восстановления:
- •Рассмотрим описанные выше проблемы с учетом применения механизмов блокировки:
- •Проблема несовместного анализа.
- •Чередующееся выполнение транзакций является верным, если оно эквивалентно некоторому последовательному выполнению, то есть оно подлежит упорядочению.
Рассмотрим описанные выше проблемы с учетом применения механизмов блокировки:
Проблема потери результатов обновления.
Операция обновления транзакции A в момент времени t3 не будет выполнена, так как задаваемая X – блокировка вступает в конфликт с S – блокировкой, заданная транзакцией B в момент времени t2, таким образом транзакция A переходит в состояние ожидания. По аналогичным причинам транзакция B переходит в состояние ожидания в момент времени t4. Не смотря на то, что в первом случае результаты любых обновлений не будут утрачены. Решение этой проблемы с помощью блокировки возможно только при решении проблемы тупиковой ситуации.
Проблема незафиксированной зависимости.
Операция B в момент t2 не будет выполнена, так как задаваемая блокировка вступает в конфликт с X – блокировкой от A. Получаем, что B ожидается до тех пор, пока не будет прекращено выполнение A. Получим, что X – блокировка будет снята и транзакция B может быть выполнена.
Проблема несовместного анализа.
Операция обновления для транзакции B в момент t6 не будет выполнена, так как задаваемая при этом X – блокировка кортежа N1 вступает в конфликт с S – блокировкой, заданной транзакцией A в момент t1. Получаем, что транзакция B переходит в состояние ожидания.
Аналогично операция извлечения A в момент времени t7 не будет выполнена из-за конфликта между S – блокировкой и заданной X – блокировкой в момент t4. Получаем, что A перейдет в состояние ожидания.
Таким образом, можно отметить, что в некоторых ситуациях использование блокировок приводит к тупиковым ситуациям. Такие ситуации возникают, когда две и более транзакций одновременно находятся в состоянии ожидания. Причем для продолжения каждой из них ожидает прекращение выполнения другой.
Для обнаружения тупиковой ситуации следует обнаружить цикл в диаграмме состояния ожидания, то есть в том перечне транзакций, которые ожидают окончание выполнение других транзакций. В некоторых системах для обнаружения тупиковых ситуаций используется хронометраж для выполнения транзакций. И сообщение о возникновении тупиковой ситуации поступает, если транзакция не выполняется за некоторое предписанное время.
Поиск выхода из тупиковой ситуации состоит в выборе одной из заблокированных транзакций, в качестве жертвы и отмене ее выполнения.
Таким образом, с нее снимается блокировка, и выполнение другой транзакции может быть прекращено.
Общепринятым критерием правильности обработки кортежей является способность к упорядочиванию.
Чередующееся выполнение будет верным, если оно будет упорядочено, то есть при его выполнении будет получен такой же результат, как и при последовательном выполнении этих же транзакций.
Отдельные транзакции считаются временными, если при их выполнении БД переходит из одного непротиворечивого состояния в другое непротиворечивое состояние.
Выполнение «одна за другой» тоже верно в любой последовательности.
Чередующееся выполнение транзакций является верным, если оно эквивалентно некоторому последовательному выполнению, то есть оно подлежит упорядочению.