Виды декомпозиций. Декомпозиция без потерь


Распределённая взаимная блокировка


Любые алгоритмы управления параллельностью, использующие механизмы блокировок, могут приводить к появлению в системе ситуации взаимной блокировки процессов (тупиковая ситуация, которая может возникнуть, когда 2/более транзакции находятся во взаимном ожидании освобождения блокировок, удерживаемых каждой из них).

Пример.

·

Транзакция Т1 запускается на сайте S1 и создает агента на сайте S2.

·         Транзакция Т2 запускается на сайте S2 и создает агента на сайте S3.

·         Транзакция Т3 запускается на сайте S3 и создает агента на сайте S1.

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

 

 

 

 

 


Графы ожидания для сайтов


Комбинированный граф ожидания для сайтов

В СУРБД для выявления ситуаций взаимной блокировки недостаточно использовать обычные (локальные) графы ожидания, необходимо также строить глобальный граф ожидания (объединение всех локальных графов ожидания).

Существует 3 общих метода выявления взаимных блокировок в СУРБД: централизованный, иерархический и распределенный.

Централизованный метод

выявления взаимных блокировок, при этом методе один из сайтов системы назначается координатором выявления взаимных блокировок (DDC). Сайт DDC отвечает за построение и обработку глобального графа ожидания. С определенным интервалом каждый менеджер блокировки в системе направляет в адрес DDC свой локальный граф ожидания. Сайт DDC выполняет построение глобального графа ожидания и проверяет его на наличие циклов, если граф содержит 1/более циклов, DDC должен разрушить их, выбрав те транзакции, которые должны быть отменены с выполнением отката, а затем перезапущены. Для минимизации количества пересылаемых данных каждый менеджер блокировки посылает сведения только об удалении/добавлении ребер в локальном графе ожидания, произошедшие с момента последней отправки сведений. Недостаток данного метода: снижение надежности всей системы, т.к.


Начало  Назад  Вперед