Как двухфазная блокировка помогает избежать несериализуемого расписания?

Теперь у меня есть две транзакции здесь. Требование согласованности: 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 ответ

Как вы упомянули, параллельное выполнение не приводит к сериализуемому расписанию, т.е. расписание не конфликтует сериализуемо.

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

Другие вопросы по тегам