Альтернативный
метод сериализации транзакций, хорошо работающий в условиях редких конфликтов
транзакций и не требующий построения графа ожидания транзакций, основан на использовании
временных меток.
Основная
идея метода (у которого существует множество разновидностей) состоит в следующем:
если транзакция Т1 началась раньше транзакции Т2, то система обеспечивает такой
режим выполнения, как если бы Т1 была целиком выполнена до начала Т2.
Для этого
каждой транзакции Т предписывается временная метка t, соответствующая времени
начала Т. При выполнении операции над объектом rтранзакция Т помечает
его своей временной меткой и типом операции (чтение или изменение).
Перед выполнением
операции над объектом г транзакция Т1 выполняет следующие действия:
Проверяет, не закончилась
ли транзакция Т, пометившая этот объект. Если Т закончилась, Т1 помечает объект
г и выполняет свою операцию.
Если транзакция Т
не завершилась, то Т1 проверяет конфликтность операций. Если операции неконфликтны,
при объекте r остается или проставляется временная метка с меньшим значением,
и транзакция Т1 выполняет свою операцию.
Если операции Т1 и
Т конфликтуют,,то если t(T) > t(T1) (то есть транзакция Т является более
«молодой», чем Т1), производится откат Т и Т1 продолжает работу.
Если же t(T) < t(T1)
(Т «старше» Т1), то Т1 получает новую временную метку и начинается
заново.
К недостаткам
метода временных меток относятся потенциально более частые откаты транзакций,
чем в случае использования синхронизационных захватов. Это связано с тем, что
конфликтность транзакций определяется более грубо.
Кроме того,
в распределенных системах не очень просто вырабатывать глобальные временные
метки с отношением полного порядка (это отдельная большая наука).
Но в распределенных
системах эти недостатки окупаются тем, что не нужно распознавать тупики, а как
мы уже отмечали, построение графа ожидания в распределенных системах стоит очень
дорого.
Знаете ли Вы, что "гравитационное линзирование" якобы наблюдаемое вблизи далеких галактик (но не в масштабе звезд, где оно должно быть по формулам ОТО!), на самом деле является термическим линзированием, связанным с изменениями плотности эфира от нагрева мириадами звезд. Подробнее читайте в FAQ по эфирной физике.