не слишком ли долго продолжается
Некоторые СУБД выполняют
детекцию взаимоблокировки, регулярно проверяя, не слишком ли долго продолжается ожидание записи или ресурса. Другой метод детекции состоит в том, что проводится стрелка от транзакции к искомой записи, а затем стрелка от записи к транзакции, которая в данный момент ее использует. Если граф имеет петли, то это означает, что обнаружена взаимоблокировка. Это показано на рис. 5.5 .
ПОЛЬЗОВАТЕЛЬ
Ожидает Ожидает
ЗАПИСЬ
БД
Используется Используется
Рис.5.5 Взаимоблокировка, обнаруженная при помощи
детектирующих циклов
Процедуры детекции взаимоблокировки завершают свою работу, отменяя одну из транзакций и продвигая следующую транзакцию в очереди.
Другой способ контроля параллельной обработки - двухфазная блокировка. Говорят, что транзакция следует протоколу двухфазной блокировки, если все операции блокировки - read_lock, write_lock - предшествуют первой операции разблокирования в транзакции. Опция read_lock позволяет считывать запись, а write_lock позволяет и считывать, и обновлять данную запись. Проверено, что транзакции могут выполняться так, что их результаты будут такими же, как если бы они выполнялись одна за другой без прерывания. Однако у двухфазной блокировки тоже есть свои недостатки. Она может привести к взаимоблокировке, если совместно с ней не применяется протокол предотвращения взаимоблокировки.
В качестве примера на рис. 5.6 видим процедуру двухфазной блокировки, приводящую к взаимоблокировке.
Рис.5.6 Пример двухфазной блокировки, приведшей
к взаимоблокировке
Транзакция 1 (Т1) задает опцию read_lock для записи О (окорок); одновременно Т2 задает опцию read_lock для записи И (индейка). Через два шага и Т1, и Т2 требуют опцию write_lock для той записи, которая удерживается опцией read_lock другой транзакции. Такое действие запрещено, так как в этом случае значение может быть изменено операцией записи, выполненной другой транзакцией. Тогда конкурирующий источник опции read_lock может считать неверное значение.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий