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

         

Методы управления параллельностью


Существует 2 основных метода управления параллельностью, позволяющих организовать одновременное безопасное выполнение транзакций при соблюдении определенных ограничений: метод блокировки и метод временных меток.

Блокировка – процедура, используемая для управления параллельным доступом к данным. Когда некоторая транзакция получает доступ к БД, механизм блокировки позволяет (с целью исключения получения некорректных результатов) отклонить попытки получения доступа к этим же данным со стороны др. транзакций.

Принцип работы метода блокировок следующий: транзакция должна потребовать выполнить блокировку для чтения (S-блокировка

или разделяемая – с взаимным доступом) или для записи (X-блокировка

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

Основные правила метода блокировки:

1). Если транзакция А блокирует объект при помощи Х-блокировки, то любой доступ к этому объекту со стороны другой транзакции будет отменен.

2). Если транзакция А блокирует объект с помощью S-блокировки, то запросы на Х-блокировку будут отвергнуты со стороны др. транзакций, на S-блокировку будут приняты.

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

1). Прежде чем прочитать объект, транзакция должна наложить на него блокировку чтения (S-блокировку).

2). Прежде чем обновить объект, транзакция должна установить для него блокировку для записи (Х-блокировку).
Если транзакция уже установила для объекта S-блокировку, необходимо расширить S-блокировку до уровня X-блокировки.

3). Если запрашиваемая со стороны транзакции B блокировка отвергается из-за конфликта с блокировкой, установленной транзакцией A, то транзакция B переводится в состояние ожидания, до тех пор, пока не будет снята блокировка, установленная транзакцией А. Во избежание ситуации «зависания» (транзакция В бесконечно долго находится в состоянии ожидания), необходимо обрабатывать запросы на блокировку по принципу «первым поступил - первым обработан».

4). Х-блокировки сохраняются вплоть до конца выполнения установившей их транзакции (до ее фиксации (commit) или отката (rollback)).

Метод временных меток.

Данный метод применяется для контроля целостности данных и совершенно отличается от метода блокировок. Не требуется применения каких-либо блокировок, следовательно, исключается возможность возникновения взаимных блокировок (тупиковая ситуация, которая может возникнуть, когда две (или более) транзакции находятся во взаимном ожидании освобождения блокировок, удерживаемых каждой из них) процессов. Методы блокировок обычно устраняют возможные конфликты посредством перевода транзакции в состояние ожидания. Методы с использованием временных меток не предусматривают какого-либо ожидания – вовлеченные в конфликт транзакции просто отменяются, после чего запускаются заново.

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

Метод использования временных меток

– протокол управления параллельностью, основная цель которого состоит в установлении глобальной очередности выполнения транзакции, при которой более старые транзакции (транзакции с меньшим значением временной отметки) имеют более высокий приоритет при разрешении возникающих конфликтов.



При использовании протокола временных отметок, если транзакция предпринимает попытку чтения или записи элемента данных, операция чтения или записи выполняется только в том случае, если последнее обновление требуемого элемента данных было выполнено более старой транзакцией. В противном случае транзакция, запросившая операцию чтения или записи, отменяется и перезапускается с присвоением ей новой временной отметки. Новая временная отметка должна быть присвоена перезапускаемой транзакции для того, чтобы предотвратить её попадание в цикл постоянной отмены и перезапуска. Без получения новой временной отметки транзакция с более старой временной отметкой не сможет завершить свою работу, поскольку более новая транзакция уже успела зафиксировать свои результаты в базе данных.

Недостатки:

  • может откатываться более дорогая транзакция, которая началась позже более дешевой;


  • более частые откаты транзакции, чем в случае использования блокировок. Связано с тем, что конфликтность транзакций определяется более грубо.



  • Содержание раздела