Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[конспект] Технологии баз данных [v0.8.1].pdf
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.3 Mб
Скачать

Слежение за возникновением тупиков производится с помощью построения графа ожидания транзакций. Ситуация тупика возникает, если в графе ожидания транзакций имеется хотя бы один (ориентированный) цикл. Одну из транзакций, попавших в цикл, необходимо откатить, причем, система сама может выбрать эту транзакцию в соответствии с некоторыми стоимостными соображениями (например, самую короткую, или с минимальным приоритетом

ит.п.).

9.5.Метод временных меток

Альтернативный метод сериализации транзакций, хорошо работающий в условиях редкого возникновения конфликтов транзакций и не требующий построения графа ожидания транзакций, основан на использовании временных меток. Основная идея метода временных меток (Timestamp Ordering, TO), у которого существует множество разновидностей, состоит в следующем: если транзакция T1 началась раньше транзакции T2, то система обеспечивает такой сериальный план, как если бы транзакция T1 была целиком выполнена до начала T2.

Для этого каждой транзакции T предписывается временная метка tpTq, соответствующая времени начала выполнения транзакции T. При выполнении операции над объектом транзакция T помечает его своими идентификатором, временной меткой и типом операции (чтение или изменение).

Перед выполнением операции над объектом транзакция T2 выполняет следующие действия:

Проверяет, помечен ли объект какой-либо транзакцией T1. Если не помечен, то помечает этот объект своей временной меткой и типом операции и выполняет операцию. Конец действий.

Иначе транзакция T2 проверяет, не завершилась ли транзакция T1, пометившая этот объект. Если транзакция T1 закончилась, то T2 помечает объект и выполняет свою операцию. Конец действий.

Если транзакция T1 не завершилась, то T2 проверяет конфликтность операций. Если операции неконфликтны, то при объекте запоминается идентификатор транзакции T2, остается или проставляется временная метка с меньшим значением, и транзакция T2 выполняет свою операцию.

Если операции транзакций T2 и T1 конфликтуют, то если tpT1q ą tpT2q (т. е. транзакция T1 является более «молодой», чем T2), то производится откат T1 и всех других транзакций, идентификаторы которых сохранены при объекте , и T2 выполняет свою операцию.

Если же tpT1q ă tpT2q (T1 «старше» T2), то производится откат T2; T2 получает новую временную метку и начинается заново.

К недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов (блокировок). Это связано с тем, что конфликтность транзакций определяется более грубо. К тому же вследствие этого журнал транзакций разрастается довольно быстро.

Кроме того, в распределенных системах не очень просто вырабатывать глобальные временные метки с отношением полного порядка (это отдельная большая наука). Но в распределенных системах эти недостатки окупаются тем, что не нужно распознавать тупики, ведь построение графа ожидания в распределенных системах стоит очень дорого.

9.6. Механизм выделения версий данных

Использование блокировок гарантирует сериальность планов выполнения смеси транзакций за счет общего замедления работы - конфликтующие транзакции ожидают, когда транзакция, первой заблокировавшая некоторый объект, не освободит его. Без блокировок не обойтись, если все транзакции изменяют данные. Но если в смеси транзакций присутствуют как транзакции, изменяющие данные, так и только читающие данные, можно применить альтернативный механизм обеспечения

68