Понимание алгоритма 2PL / Как действуют транзакции в списке ожидания? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь закодировать алгоритм 2PL в Java.

Я немного озадачен поведением транзакций во время ожидания.

давайте предположим, что у нас есть транзакция T1 в отметке времени ts1, которая имеет W-блокировку на элементе A, затем прибывает транзакция T2 в отметке времени ts2, чтобы прочитать элемент A (в этом случае она будет ждать, пока T1 не снимет блокировку ).

Теперь давайте рассмотрим, что T2 снова отображается в метке времени t4, но на этот раз он хочет прочитать другой элемент B. Как это будет действовать в этом случае? так как он уже ожидает другой блокировки на другом элементе.

Будет ли он полностью заблокирован до получения предыдущей блокировки, а затем продолжит исходную последовательность? Если так, то должны ли мы добавить T2 с отметкой времени ts4 в список ожидания, хотя элемент B может свободно использоваться?
Или мы можем продолжить выполнение T2 на B, сохраняя его в списке ожидания на A?

...