Как двухфазная блокировка помогает избежать несериализуемого расписания?
Теперь у меня есть две транзакции здесь. Требование согласованности: A=0 v B=0, при A=B=0 начальные значения
T1: read(A);
read(B);
if A=0 then B:=B+1;
write(B).
T2: read(B);
read(A);
if B=0 then A:=A+1;
write(A).
Я знаю, что нет параллельного выполнения, приводящего к сериализуемому расписанию. Поэтому я хочу применить двухфазную блокировку, чтобы гарантировать сериализуемость.
Как доза двухфазной блокировки гарантирует сериализуемость? Можете ли вы дать мне один пример этих двух транзакций?
Спасибо.
1 ответ
Как вы упомянули, параллельное выполнение не приводит к сериализуемому расписанию, т.е. расписание не конфликтует сериализуемо.
Если расписание сериализуемо не конфликтует, то протокол двухфазной блокировки приводит к тупику. Поэтому нельзя использовать двухфазную блокировку, чтобы гарантировать сериализуемость.