Jump to content

Двухфазная блокировка

В базах данных и транзакций обработке двухфазная блокировка ( 2PL ) — это пессимистичный метод управления параллелизмом , гарантирующий сериализуемость конфликтов . [1] [2] Это также имя результирующего набора транзакций расписаний (историй) базы данных. Протокол использует блокировки , применяемые транзакцией к данным, которые могут блокировать (интерпретироваться как сигналы остановки) другим транзакциям доступ к тем же данным в течение жизни транзакции.

По протоколу 2PL блокировки накладываются и снимаются в два этапа:

  1. Фаза расширения: блокировки устанавливаются, но ни одна блокировка не снимается.
  2. Фаза сжатия: блокировки снимаются, а блокировки не устанавливаются.

В базовом протоколе используются два типа блокировок: общие и эксклюзивные блокировки. Уточнения базового протокола могут использовать больше типов блокировок. При использовании блокировок, блокирующих процессы, 2PL, S2PL и SS2PL могут подвергаться взаимоблокировкам , возникающим в результате взаимной блокировки двух или более транзакций.

Чтение и запись блокировок [ править ]

Блокировки используются для обеспечения сериализуемости . Транзакция удерживает блокировку объекта , если эта транзакция получила блокировку этого объекта, который еще не был освобожден.

Для 2PL используются только блокировки доступа к данным — блокировки чтения ( общие блокировки ) и блокировки записи ( монопольные блокировки ). Ниже приведены правила блокировки чтения и блокировки записи :

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

Варианты [ править ]

гарантирует сериализуемость конфликтов гарантирует сериализуемость представления устраняет тупики гарантирует возвратность гарантирует строгость предотвращает фантомное чтение предотвращает грязное чтение
2PL Да Нет Нет Нет Нет Нет Нет
C2PL Да Да [ нужна ссылка ] Да да? [ нужна ссылка ] да? [ нужна ссылка ] Нет [ нужна ссылка ] Да [ нужна ссылка ]
С2ПЛ Да Нет Нет Да Да Да Да
СС2ПЛ Да Нет Нет Да Да Да Да

Двухфазная блокировка [ править ]

Согласно протоколу двухфазной блокировки , каждая транзакция обрабатывает свои блокировки в два отдельных последовательных этапа во время выполнения транзакции:

  1. Фаза расширения (она же фаза роста): блокировки приобретаются, но блокировки не освобождаются (количество блокировок может только увеличиваться).
  2. Фаза сжатия (также известная как фаза сжатия): блокировки снимаются, а блокировки не устанавливаются.

Правила двухфазной блокировки можно резюмировать следующим образом: каждая транзакция никогда не должна устанавливать блокировку после того, как она сняла блокировку. Свойство сериализуемости гарантируется для расписания с транзакциями, подчиняющимися этому правилу.

Обычно без явного знания транзакции в конце фазы 1 правило безопасно определяется только тогда, когда транзакция завершила обработку и запросила фиксацию. В этом случае все замки можно снять сразу (этап 2).

двухфазная Консервативная блокировка

Разница между 2PL и C2PL заключается в том, что транзакции C2PL получают все необходимые блокировки до начала транзакции. Это делается для того, чтобы транзакция, которая уже удерживает некоторые блокировки, не блокировала ожидание других блокировок. Консервативный 2PL предотвращает тупики .

двухфазная Строгая блокировка

Чтобы соответствовать протоколу строгой двухфазной блокировки (S2PL), транзакция должна соответствовать 2PL и снимать свои (эксклюзивные) блокировки записи только после завершения транзакции (т. е. либо фиксации , либо отмены ). С другой стороны, блокировки чтения (совместного использования) регулярно снимаются во время фазы сжатия.

В отличие от 2PL, S2PL обеспечивает строгость (особый случай бескаскадной восстанавливаемости). Этот протокол не подходит для B-деревьев , поскольку он вызывает узкое место (в то время как B-деревья всегда начинают поиск с родительского корня). [ нужна ссылка ]

двухфазная строгая Сильная блокировка

или Строгость , или Строгое планирование , или Строгая двухфазная блокировка

Чтобы соответствовать строгой двухфазной блокировке (SS2PL), блокировки чтения и записи транзакции снимаются только после ее завершения (т. е. либо фиксации, либо отмены). Транзакция, подчиняющаяся SS2PL, имеет только фазу 1 и не имеет фазы 2 до завершения транзакции. Каждое расписание SS2PL также является расписанием S2PL, но не наоборот.

См. также [ править ]

Ссылки [ править ]

  1. ^ Филип А. Бернштейн , Вассос Хадзилакос, Натан Гудман (1987): Управление параллелизмом и восстановление в системах баз данных , Издательство Addison Wesley Publishing Company, ISBN   0-201-10715-5
  2. ^ Герхард Вейкум , Готфрид Воссен (2001): Транзакционные информационные системы , Elsevier, ISBN   1-55860-508-8
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b92a5d8fb576952ec0c21a7b5179986f__1712184000
URL1:https://arc.ask3.ru/arc/aa/b9/6f/b92a5d8fb576952ec0c21a7b5179986f.html
Заголовок, (Title) документа по адресу, URL1:
Two-phase locking - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)