Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Блокировка




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

На рис.6. показаны транзакции А и В, которые выполняются для кортежей со счетами. При этом транзакция А суммирует балансы, транзакция В производит перевод суммы 10 со счета 3 на счет 1. полученный в итоге транзакции А результат 110, очевидно, неверен, и если он будет записан в базе данных, то в ней может возникнуть проблема несовместимость. В таком случае говорят, что транзакция А встретилась с несовместимым состоянием и на его основе был выполнен несовместимый анализ.

 

Счет 1 – 40, Счет2 – 50, Счет3 - 30
Транзакция А Время Транзакция В
Извлечение кортежа Счет 1 Sum=40 t1  
Извлечение кортежа Счет 2 Sum=90 t2  
  t3 Извлечение кортежа Счет 3
  t4 Обновление кортежа Счет 3 30 à 20
  t5 Извлечение кортежа Счет 1
  t6 Обновление кортежа Счет 1 40 à 50
  t7 Завершение транзакции
Извлечение кортежа Счет 3 Sum = 110 (а не 120) t8  

Рис.10.6. Транзакция А выполнила несовместимый анализ

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

Более подробно функционирование блокировки заключается в следующем:

1. Прежде всего, предположим, что в системе поддерживается два типа блокировок: блокировка без взаимного доступа (монопольная блокировка), называемая X-блокировкой, и блокировка с взаимным доступом, называемая S-блокировкой.

2. Если транзакция А блокирует кортеж р без возможности взаимного доступа (X-блокировка), то запрос другой транзакции В с блокировкой этого кортежа р будет отменен.

3. Если транзакция А блокирует кортеж р с возможностью взаимного доступа (S-блокировка), то

§ запрос со стороны некоторой транзакции В на X-блокировку кортежа будет отвергнут;

§ запрос со стороны некоторой транзакции В на S-блокировку кортежа будет принят (т.е. транзакция В также будет блокировать кортеж р с помощью S-блокировки).

Теперь следует ввести протокол доступа к данным, который на основе X и S-блокировок позволяет избежать возникновения проблем параллелизма, описанных выше.

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

2. Транзакция, предназначенная для обновления кортежа, прежде всего должна наложить X-блокировку на этот кортеж. Иначе говоря, если, например, для последовательности действий типа извлечение/обновление для кортежа уже задана S-блокировка, то ее необходимо заменить X-блокировкой.

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

4. X-блокировки сохраняются вплоть до конца выполнения транзакции (до операции «завершение выполнения»). S –блокировки также обычно сохраняются вплоть до этого момента.




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 471; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.