Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Использование метода временных отметок для управления параллельными транзакциями



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

По своей сути же временные отметки являются методом управления параллельными транзакциями, применяемым вместо метода блокировок. То есть временные отметки являются методом достижения упорядоченности планов параллельных транзакций.

Временная отметка (timestamp) – уникальный идентификатор, создаваемый СУБД с целью обозначения относительного момента времени запуска транзакции. /*относительное, потому что может быть и не время, а просто какой-то счетчик */

Метод работы СУБД с использованием временных отметок заключается в установлении глобальной очередности выполнения транзакций, при которой более старые транзакции имеют более высокий приоритет при разрешении возникающих конфликтов. Более старой считается транзакция с меньшим значением временной отметки.

При использовании протокола временных отметок операция чтения или записи выполняется только в том случае, если последнее изменение требуемого элемента данных было выполнено более старой транзакцией. В противном случае транзакция, запросившая операцию, отменяется и перезапускается с присвоением ей новой временной отметки. Новая временная отметка необходима для того, чтобы транзакция не попала в бесконечный цикл перезапуска.

Элементы данных в таких системах должны иметь временную отметку чтения и временную отметку записи. Значение этих отметок равно временным отметкам транзакций, которые последними выполняли операцию чтения и записи.

Согласно протоколу с упорядочиванием по временным отметкам обработка транзакции T с временной отметкой ts(T) выполняется следующим образом.

1 Транзакция T выдает команду read(x)

а) Элемент x обновлен более поздней транзакцией, то есть ts(T)<write_timestamp(x). В этом случае высока вероятность, что любые другие считанные этой транзакцией элементы уже не согласованы со значением элемента x. Поэтому транзакция отменяется и перезапускается.

б) Если ts(T)>=write_timestamp(x), то операция чтения выполняется, транзакция продолжает работу, временной отметки по чтению элемента x(read_timestamp(x)) присваивается значение ts(T).

2 Транзакция T выдает команду write (x).

а) Транзакция запрашивает запись элемента x, значение которого было считано более новой (поздней) транзакцией. То есть, ts(T)<read_timestamp(x).

Это означает, что более новая транзакция уже использовала текущее значение элемента x и в результате его обновления возникнет ошибка. В этом случае транзакция Т будет отменена и перезапущена с новой временной отметкой.

б) Транзакция запрашивает запись элемента, который был обновлен более поздней транзакцией.ts(T)<write_timestamp(x). Это означает, что транзакция пытается записать в элемент x устаревшее значение, следовательно, транзакция должна быть отменена и перезапущена.

в) В противном случае операция записи элемента xвыполняется, временной отметки по записи элемента присваивается значение ts(T) и транзакция продолжает работу.

Такая схема работы гарантирует упорядоченность плана выполнения транзакций.

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

Пусть транзакция Т пытается записать элемент x иts(T)<write_timestamp(x). Это означает, что более новая транзакция уже перезаписала элемент данных, который пытается перезаписать более старая транзакция, основываясь на устаревшем значении элемента. В таком случае операция записи может быть проигнорирована и транзакция продолжит работу.





Дата публикования: 2015-02-18; Прочитано: 635 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...