Материалы к теме 11.

advertisement
Тема 11. Дополнительные вопросы обработки транзакций.
«Грязные» данные.
T1
T2
A
25
l1(A); r1(A);
A= A+100
w1(A); l1(B); u1(A);
B
25
125
l2(A); r2(A);
A = A*2;
w2(A);
l2(B); Отложено
250
r1(B);
Отменена; u1(B).
l2(B); u2(A); r2(B);
B = B*2;
w2(B); u2(B);
50
Каскадный откат – отмена всех транзакций, считывающих элементы, записанные
отмененными транзакциями.
Расписание является восстанавливаемым, если каждая транзакция T завершается
только после того, как завершаются все транзакции, записывающие элементы, читаемые
транзакцией T.
Пусть ci - действие по завершению транзакции.
S1: w1(A); w1(B); w2(A); r2(B); c1; c2 – восстанавливаемое и упорядоченное;
S2: w2(A); w1(B); w1(A); r2(B); c1; c2 – восстанавливаемое, но неупорядочиваемое;
S3: w1(A); w1(B); w2(A); r2(B); c2; c1 – упорядоченное, но невосстанавливаемое.
Расписание избегает каскадных откатов (ИКО), если транзакция может прочитать
только значения, которые записаны завершенными транзакциями.
S4: w1(A); w1(B); w2(A); c1; r2(B); c2 – восстанавливаемое и ИКО - расписание.
Правило строгих блокировок: Транзакции должны удерживать любую
исключительную блокировку (или блокировку приращения), пока транзакция не будет
либо отменена, либо завершена, и запись протокола об этом не достигнет диска.
Расписание, которое удовлетворяет правилу строгих блокировок, называется строгим
расписанием.
Упорядочиваемые
Упорядоченные
Строгие
ИКО
Восстанавливаемые
Видимая упорядочиваемость.
Пусть существуют гипотетические транзакции: T0 – записывает все элементы, которые
считываются транзакцией расписания; Tf – считывает каждый элемент, записываемый
какой-либо транзакцией расписания.
Для каждого действия ri(A), мы можем найти действие wj(A), которое предшествует
действию на чтение элемента. Транзакцию Tj назовем источником действия чтения ri(A).
Два расписания являются видимо-эквивалентными, если для каждого действия
считывания в одном из расписаний, его источник тот же самый в обоих расписаниях.
Если расписание S является видимо-эквивалентным некоторому упорядоченному
расписанию, расписание S является видимо-упорядочиваемым.
Пример.
S: r2(B); w2(A); r1(A); r3(A); w1(B); w2(B); w3(B).
Полиграф.
A
T0
A
T1
B
T2
T3
B
Tf
A
Окончательный полиграф.
T0
T1
T2
T3
Tf
S: r2(A); r1(A); w1(C); r3(C); w1(B); r4(B); w3(A); r4(C); w2(D); r2(B); w4(A); w4(B).
C
B,C
A
Т0
B
Т1
A
C
Т2
A, B
Т3
Т4
D
Тf
Окончательный полиграф
Т0
Т1
Т2
Т3
Т4
Тf
Распознавание тупиков.
Пример.
T1: l1(A); r1(A); l1(B); w1(B); u1(A); u1(B).
T2: l2(C); r2(C); l2(A); w2(A); u2(C); u2(A).
T3: l3(B); r3(B); l3(C); w3(C); u3(B); u3(C).
T4: l4(D); r4(D); l4(A); w4(A); u4(D); u4(A).
Т1
l1(A); r1(A);
Т2
Т3
Т4
l2(C); r2(C);
l3(B); r3(B);
l4(D); r4(D);
l2(A); Отложена
l3(C); Отложена
l4(A); Отложена
l1(B); Отложена
Промежуточный граф ожидания после шага 7.
4
3
2
1
После шага 8.
4
3
2
1
После отката транзакции T1.
4
3
2
Упорядочивание элементов.
T1: l1(A); r1(A); l1(B); w1(B); u1(A); u1(B).
T2: l2(A); l2(C); r2(C); w2(A); u2(C); u2(A).
T3: l3(B); r3(B); l3(C); w3(C); u3(B); u3(C).
T4: l4(A); l4(D); r4(D); w4(A); u4(D); u4(A).
Т1
l1(A); r1(A);
Т2
Т3
Т4
l2(A); Отложена
l3(B); r3(B);
l4(A); Отложена
l3(C); w3(C);
u3(B); u3(C);
l1(B); w1(B);
u1(A); u1(B);
l2(A); l2(C);
r2(C); w2(A);
u2(A); u2(C);
l4(A); l4(D);
r4(D); w4(A);
u4(A); u4(D)
Установка временных меток.
1. Схема «ждать - умереть»:
 Если T «старше» U (временная метка для T меньше, чем для U), тогда T
позволяется ожидать блокировку, захваченную транзакцией U.
 Если U «старше» T, то T «умирает», т.е. должен быть произведен откат T.
2. Схема «ранить - жать»:
 Если T «старше» U, то T «ранит» U. Обычно «ранение» является фатальным:
должен быть произведен откат U и предоставление T блокировки, которая требуется.
Единственным исключением является ситуация, когда «ранение» U происходит на стадии
ее завершения, когда транзакция освобождает захваченные блокировки. Тогда не
требуется проводить откат транзакции U.
 Если U «старше» T, то T позволяется ожидать предоставление блокировки,
захваченной транзакцией U.
Схема «ждать - умереть».
Т1
l1(A); r1(A);
Т2
Т3
Т4
l2(A); Откат
l3(B); r3(B);
l4(A); Откат
l3(C); w3(C);
u3(B); u3(C);
l1(B); w1(B);
u1(A); u1(B);
l4(A); l4(D);
l2(A); Ждет
r4(D); w4(A);
u4(A); u4(D)
l2(A); l2(C);
r2(C); w2(A);
u2(A); u2(C);
Схема «ранить - ждать».
Т1
l1(A); r1(A);
Т2
Т3
Т4
l2(A); Ждет
l3(B); r3(B);
l4(A); Ждет
Ранена
l1(B); w1(B);
u1(A); u1(B);
l2(A); l2(C);
r2(C); w2(A);
u2(A); u2(C);
l4(A); l4(D);
r4(D); w4(A);
u4(A); u4(D)
l3(B); r3(B);
l3(C); w3(C);
u3(B); u3(C);
Download