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