Домашнее задание 7. Срок сдачи – 12 мая ДО лекции. Задания могут сдаваться в лаборантскую кафедры (Айслу) в любой из предыдущих дней. В задании приведите условия задач и явно укажите все сделанные вами дополнительные предположения, если таковые у вас имеются. Будьте внимательны, для решения могут понадобиться не все условия. Если вам кажется, что условий не хватает, проанализируйте имеющиеся данные, возможно, их будет вполне достаточно для ответа на поставленный вопрос. Задавайте вопросы на idb-help@ksu.ru Задача 1 (20 очков) Ниже приведены 2 транзакции в терминах их воздействия на два элемента БД, А и В, которые предполагаются целыми. Т1: READ(A,t); t:=t+2; WRITE(A,t); READ(B,t); t:=t*3; WRITE(B,t); T2: READ(B,s); s:=s*2; WRITE(B,s); READ(A,s); s:=s+3; WRITE(A,s); Предполагается также, что все ограничения целостности, имеющиеся в БД, сохраняются при изолированном выполнении транзакций. (Заметьте, что that A = B не является в данном случае ограничением целостности). a) Оказывается, что оба упорядоченных графика имеют одинаковое воздействие на БД, т.е. (T1,T2) и (T2,T1) эквивалентны. Докажите это путем сравнения этого воздействия на произвольное начальное состояние БД. Назовем график упорядочиваемым, если его воздействие на БД при любом ее начальном состоянии эквивалентно воздействию некоторого упорядоченного графика. Замечание. Упорядочиваемый график может не быть конфликтно-упорядочиваемым. б) Приведите по одному примеру упорядочиваемого и не упорядочиваемого графиков 12 действий транзакций, определенных выше. в) Сколько всего упорядочиваемых графиков имеется для этих 12 действий? Задача 2 (30 очков) Для каждого из следующих графиков: a) Sa = r1(A); w1(B); r2(B); w2(C); r3(C); w3(A); б) Sb =r1(A); r2(A); r1(B); r2(B); r3(A); r4(B); w1(A); w2(B); ответьте на вопросы: 1) Каков будет граф предшествования для графика? 2) Является ли график конфликтно-упорядочиваемым? Если да, каковым для него будет упорядоченный график? Задача 3 (20 очков) Предположим, мы выполняем следующие действия независимо над B-tree(порядка 3), приведенным ниже (т.е. 35 вставляется в данное дерево, а не после удаления 23). Если использовать древовидный протокол, когда можно снять блокировку записи на каждом узле, к которому происходит доступ? Заметьте, что мы хотим разблокировать узел как можно раньше для максимального параллелизма. Используйте обозначения: блокировать - L(узел), разблокировать - UL(узел), читать - R(узел), записать -W(узелnode) для соответствующих действий. a) Удалить 23 б) Вставить 35 a b d c 7 e 2 3 5 13 f 7 11 g 13 17 19 23 31 43 h 23 29 i 31 37 41 43 47 Задача 4 (20 очков) В следующих последовательностях событий используются обозначения: Ri(X) – «транзакция Ti стартует» и будет читать множество элементов БД X, Vi - «транзакция Ti проверяет достоверность», Wi(X) - «транзакция Ti завершается, записав множество элементов БД X. Объясните, что будет происходить, когда каждая последовательность обрабатывается диспетчером с проверкой достоверности. В частности, для каждого действия Vj укажите, была ли проверка достоверности успешной или нет. a) R1(A,B); R2(B,C); R3(C); V1; V2; V3; W1(A); W2(B); W3(C); б) R1(A,B); R2(B,C); R3(B); V1; V2; V3; W1(C); W2(B); W3(A); Задача 5 (20 очков) В таблице блокировок система хранит «групповой режим», указывающий на самый «строгий» тип блокировки для транзакций, блокирующих объект БД в данный момент времени. В частности, пусть объект O блокирован в режимах M1, ... Mj , и пусть групповой режим объекта есть GM(O). Тогда для любого возможного режима блокировки N, 1) GM(O) и N не совместимы тогда и только тогда, когда имеется элемент Mi множества {M1,..., Mj} такой, что N and Mi не совместимы; 2) GM(O) и N совместимы тогда и только тогда, когда для всех элементов Mi множества {M1,..., Mj} N and Mi совместимы; Когда поступает новый запрос на блокировку в режиме N, система может просто сравнить является ли N совместимым с GM(O), вместо того, чтобы сравнивать его со всеми блокировками, действующими на объект O. Рассмотрим многоуровневый механизм блокировки В каждой из ниже приведенных подзадач от (a) до (д) заданы режимы блокировок, имеющихся в данный момент для объекта O. (Например, в случае (a), объект O заблокирован 2-мя транзакциями в режиме IX и 2-мя транзакциями – в режиме IS.) Для каждого случая, приведите групповой режим, если таковой существует, если нет – поясните почему. a) IX, IS, IX, IS б) SIX, IS в) S, IS г) S, IS, IX, SIX д) IX, S, IS