Разрешает ли строгая двухфазная блокировка (2PL) совместно используемые элементы ЧТЕНИЯ?

#database #concurrency #locking #acid

#База данных #параллелизм #блокировка #acid

Вопрос:

Я просмотрел несколько источников, но недавно наткнулся на один, в котором говорится, что даже общие блокировки чтения не разрешены в strict 2PL. Это правда? Также, пожалуйста, подтвердите, что совместное использование разрешено с консервативным и базовым 2PL?

Ответ №1:

Матрица совместимости блокировок отвечает на ваш вопрос

 Lock-Type       Read-Lock        write-Lock
Read-Lock                            X
Write-Lock         X                 X
  

Здесь X обозначает, что два типа блокировки несовместимы, а пробел обозначает, что блокировка совместима.Общая блокировка (блокировка чтения) разрешена, только если для этого элемента установлена общая блокировка.

Что касается строгого и строгого 2PL, разница заключается только в порядке снятия блокировки по сравнению с базовым 2PL.

В strict 2PL все блокировки записи снимаются только после операции фиксации / прерывания.

В строгом 2PL все блокировки снимаются только после операции фиксации / прерывания.