Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет51/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   47   48   49   50   51   52   53   54   ...   177
7.2. МЕТОДЫ УПРАВЛЕНИЯ ТРАНЗАКЦИЯМИ 
Консервативные  методы.  Блокировка  –
  процедура,  используемая 
для  управления  параллельным  доступом  к  данным.  Когда  некоторая 
транзакция получает доступ к БД, механизм блокировки позволяет (с це-
лью  исключения  получения  некорректных  результатов)  отклонить  по-
пытки получения доступа к этим же данным со стороны других транзак-
ций. 
Именно методы блокировки чаще всего используются на практике для 
обеспечения  упорядоченности  параллельно  выполняемых  транзакций. 
Существует несколько различных вариантов этого механизма, однако все 
они построены на одном и том же фундаментальном принципе: транзак-
ция  должна  потребовать  выполнить  блокировку  для  чтения  (разделяе-
мую) или для записи (эксклюзивную) некоторого элемента данных перед 
тем, как она сможет выполнить в БД соответствующую операцию чтения 
или  записи.  Установленный  блок  препятствует  модификации  элемента 
данных другими транзакциями или даже считыванию его, если этот блок 
был установлен для записи. Блокировка может быть выполнена для эле-
ментов самого различного размера – начиная с БД в целом и заканчивая 
 
68


 
отдельным полем конкретной записи. Размер блокируемого элемента за-
дается уровнем детализации устанавливаемого блока 
Если транзакция установила блокировку элемента данных для чтения
она сможет считать его, но не сможет обновить. 
Если транзакция установила блокировку элемента данных для записи
она может как читать, так и обновлять этот элемент. 
Поскольку  операция  чтения  не  может  служить  причиной  конфликта, 
допускается устанавливать блокировку для чтения одного и того же эле-
мента  одновременно  со  стороны  сразу  нескольких  транзакций.  В  то  же 
время  блокировка  элемента  для  записи  предоставляет  транзакции  экс-
клюзивное право доступа к нему. Следовательно, до тех пор пока тран-
закция будет удерживать некоторый элемент заблокированным для запи-
си,  никакая  другая  транзакция  не  сможет  ни  считать,  ни  обновить  его. 
Для  обеспечения  упорядоченности  следует  использовать  дополнитель-
ный протокол, определяющий моменты установки и снятия блокировки 
для каждой из транзакций. Самым известным из таких протоколов явля-
ется метод двухфазной блокировки. 
Двухфазная  блокировка  –  это  выполнение  транзакции  по  протоколу, 
при котором все операции блокирования предшествуют первой операции 
разблокирования. 
В  соответствии  с  основным  правилом  этого  протокола  каждая  тран-
закция может быть разделена на две фазы: фазу нарастания, в которой 
выполняются все необходимые блокировки и не освобождается ни один 
из элементов данных, и фазу сжатия, в которой освобождаются все вы-
полненные ранее блокировки и не может быть затребовано ни одной но-
вой. Нет никакой необходимости в том, чтобы все требуемые блокиров-
ки  были  установлены  одновременно.  Как  правило,  транзакция  устанав-
ливает  некоторые  блокировки,  выполняет  определенную  обработку,  по-
сле чего может затребовать установку дополнительных необходимых ей 
блокировок. Однако она не может освободить ни один из блоков, пока не 
достигнет той стадии, на которой ей уже не потребуется установка новых 
блокировок.  
Есть  одна  проблема,  связанная  с  двухфазной  блокировкой,  которая 
может  иметь  место  при  любых  схемах  освобождения  заблокированных 
элементов. Эта проблема носит название взаимной блокировки и является 
следствием  того  факта,  что  любая  транзакция  может  быть  переведена  в 
состояние ожидания освобождения необходимого элемента данных. Если 
две  транзакции  будут  ожидать  освобождения  элементов,  заблокирован-
ных другой транзакцией из этой же пары, то возникнет состояние взаим-
ной блокировки. Для исключения самоблокировок может использоваться 
 
69


 
система  приоритетов,  в  которой  приоритет  транзакции  тем  выше,  чем 
дольше  она  находится  в  состоянии  ожидания.  Альтернативным  вариан-
том  является  использование  для  ожидающих  транзакций  очереди,  по-
строенной  по  схеме  «первым  пришел,  первым  обслуживается».  Однако 
чаще всего прибегают к самому простому варианту: выбирают в качестве 
жертвы одну из транзакций и просто ее откатывают. Эти действия, несо-
мненно, могут повлиять на эффективность работы системы.  
Один из возможных подходов предупреждения взаимных блокировок 
состоит  в  установлении  порядка  выполнения  транзакций  на  основе  ис-
пользования временных отметок, о чем будет сказано ниже. Были пред-
ложены  два  возможных  алгоритма.  Первый  алгоритм,  получивший  на-
звание  «ожидание – отмена»,  требует,  чтобы  более  старые  транзакции 
ожидали завершения более новых. В противном случае транзакция отме-
няется и перезапускается с той же временной отметкой. Однако рано или 
поздно она станет самой старой из активных транзакций и уже не будет 
отменена.  Второй  алгоритм, «отмена – ожидание»,  использует  диамет-
рально противоположный подход: только более новые могут ожидать за-
вершения более старой транзакции. Если более старая транзакция потре-
бует  выполнения  блокировки  элемента  данных,  уже  заблокированного 
более новой транзакцией, последняя будет отменена. Иногда для преду-
преждения тупиков система строит граф выполнения транзакций и пыта-
ется заранее определить тупиковые ситуации. 


Достарыңызбен бөлісу:
1   ...   47   48   49   50   51   52   53   54   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет