Альтернативный
метод сериализации транзакций, хорошо работающий в условиях редких конфликтов
транзакций и не требующий построения графа ожидания транзакций, основан на использовании
временных меток.
Основная
идея метода (у которого существует множество разновидностей) состоит в следующем:
если транзакция Т1 началась раньше транзакции Т2, то система обеспечивает такой
режим выполнения, как если бы Т1 была целиком выполнена до начала Т2.
Для этого
каждой транзакции Т предписывается временная метка t, соответствующая времени
начала Т. При выполнении операции над объектом r транзакция Т помечает
его своей временной меткой и типом операции (чтение или изменение).
Перед выполнением
операции над объектом г транзакция Т1 выполняет следующие действия:
К недостаткам
метода временных меток относятся потенциально более частые откаты транзакций,
чем в случае использования синхронизационных захватов. Это связано с тем, что
конфликтность транзакций определяется более грубо.
Кроме того,
в распределенных системах не очень просто вырабатывать глобальные временные
метки с отношением полного порядка (это отдельная большая наука).
Но в распределенных системах эти недостатки окупаются тем, что не нужно распознавать тупики, а как мы уже отмечали, построение графа ожидания в распределенных системах стоит очень дорого.
|
![]() |