Ответ 1
Схема ожидания > . Это не превентивный метод предотвращения тупиковой ситуации. Когда транзакция Ti запрашивает элемент данных, который в настоящее время удерживается Tj, Ti может ждать только, если у него есть метка времени меньше, чем у Tj (это Ti старше, чем Tj), в противном случае Ti откатывается (умирает).
В этой схеме, если транзакция запрашивает блокировку ресурса (элемента данных), который уже удерживается с конфликтующей блокировкой другой транзакцией, может возникнуть одна из двух возможностей -
(1) Если TS (Ti) TS (Tj) - это Ti, который запрашивает конфликтную блокировку, старше Tj - тогда Ti может дождаться момента, когда будет доступен элемент данных.
(2) Если TS (Ti) > TS (tj) - это Ti, меньше, чем Tj - тогда Ti умирает. Ti перезапускается позже со случайной задержкой, но с той же меткой времени.
Эта схема позволяет старшей транзакции ждать, но убивает младшую.
Например:
Предположим, что транзакции T22, T23, T24 имеют отметки времени 5, 10 и 15 соответственно. Если T22 запрашивает элемент данных, удерживаемый T23, тогда T22 будет ждать. Если T24 запрашивает элемент данных, удерживаемый T23, тогда T24 будет откат назад.
Схема ожидания ран: Это превентивный метод предотвращения тупиковой ситуации. Это аналог схемы ожидания. Когда Transaction Ti запрашивает элемент данных, который в настоящее время удерживается Tj, Ti может ждать только, если у него есть метка времени больше, чем у Tj, иначе Tj откат (Tj ранен Ti).
В этой схеме, если транзакция запрашивает блокировку ресурса (элемента данных), который уже удерживается с конфликтующей блокировкой какой-либо другой транзакцией, может возникнуть одна из двух возможностей -
(1) Если TS (Ti) TS (Tj), то Ti заставляет Tj откатываться - это Ti раны Tj. Tj перезапускается позже со случайной задержкой, но с той же меткой времени.
(2) Если TS (Ti) > TS (Tj), то Ti вынужден ждать, пока ресурс не будет доступен.
Эта схема позволяет младшей транзакции ждать; но когда более старая транзакция запрашивает элемент, хранящийся младшим, более старая транзакция заставляет младшего отменить и освободить элемент.
Например:
Предположим, что транзакции T22, T23, T24 имеют отметки времени 5, 10 и 15 соответственно. Если T22 запрашивает элемент данных, удерживаемый T23, тогда элемент данных будет выгружен из T23, и T23 будет откат. Если T24 запрашивает элемент данных, удерживаемый T23, то T24 будет ждать.
В обоих случаях транзакция, которая поступает в систему на более позднем этапе, прерывается.