Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модель с блокировками для чтения и записи.

Поиск

Если элемент блокирован для записи, то на его значение воздействует функция . Если для чтения – значение элемента не изменяется.

Метод проверки сериализуемости расписания:

Строится граф предшествования. Узлы – транзакции. Дуги определяются следующим образом:

1) Транзакция устанавливает блокировку для чтения элемента А, транзакция , следующая за , устанавливает блокировку для записи А. Строится дуга из в .

2) Транзакция устанавливает блокировку для записи А, а транзакция , следующая за ней (если она существует) устанавливает блокировку так же для записи. Тогда строим дугу из в . Пусть далее, блокирует А для чтения после того, как снимет свою блокировку для записи, но перед тем, как установит свою блокировку для записи. Если не существует, то любая транзакция, которая блокирует А для чтения после того, как разблокирует его. Тогда строим дугу из в .

3) Если граф имеет циклы, то расписание не сериализуемо.

 

 

Параллельный доступ к иерархически структурированным элементам.

Во многих случаях совокупность элементов, к которым транзакция осуществляет доступ, может рассматриваться как дерево:

1) элементы являются узлами В-дерева;

2) логическая БД структурирована согласно иерархической модели;

3) РБД может иметь элементы на 4-х уровнях:

а) БД в целом;

б) каждое отношение;

в) каждый блок, в котором хранится файл, соответствующий отношению;

г) каждый кортеж.

При блокировке элементов можно придерживаться 2-х разных стратегий:

1) Блокировка элемента может предполагать и блокировку всех элементов, являющихся его потомками. Такая стратегия экономит время, т.к. она исключает блокировку более мелких элементов.

2) Блокировать элемент без блокировки его потомков.

Будем говорить, что транзакция подчиняется протоколу для дерева, если за исключением первого заблокированного элемента нельзя заблокировать никакой другой элемент, пока не будет разблокирован родительский узел.

Терема: Любое расписание транзакций, подчиняющееся протоколу для дерева, сериализуемо.

Пример: : LOCK A

: LOCK B

LOCK D

UNLOCK B

LOCK B

LOCK C

: LOCK E

UNLOCK D

LOCK F

UNLOCK A

LOCK G

UNLOCK C

UNLOCK E

LOCK E

UNLOCK F

UNLOCK B

UNLOCK G

UNLOCK E

 

o A

 

B o o C

 

D o o E

 

F o o G

 

FIRST() – первый из элементов, блокируемых транзакцией .

FIRST() = A FIRST() = B FIRST() = E

Обе транзакции и блокируют В, причём первой это делает . Строим . и блокируют Е, первой это делает : . Отсюда существуют две последовательности расписаний: , , и , , .

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 189; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.217.176 (0.005 с.)