Обработка с помощью транзакций

На основе транзакций строится безопасная работа, а также обеспечивается изолированность пользователей.

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

Т: а1, а2, …, аn; Commit (зафиксировать во внешней памяти); – транзакция закончена;

Т: а1, а2, …, аn; Rollback (все действия отменяются);

Рассмотрим следующие проблемы:

1. целостности данных в БД: транзакции появились в ответ на ограничения целостности.

СОТРУДНИКИ (СОТР_ИМЯ, СОТР_ОТД, …)

ОТДЕЛЫ (ОТД_№, ОТД_НАЧ, ОТД_ КОЛ, …)

При изменении числа сотрудников будет нарушаться условие целостности: число кортежей = значению атрибута. Чтобы не нарушать ограничение целостности надо ввести транзакцию: Т(добавление в СОТРУДНИКИ; модификация атрибута в ОТДЕЛЫ; COMMIT). Для поддержания ограничений целостности можно допустить нарушение их в ходе транзакций, но в конце транзакции Commit должен проверить все отложенные ограничения.

Ограничения целостности можно разделить на 2 группы:

А) откладываемые;

Б) неотложные (которые прямо препятствуют выполнению операций), связанные с типом и значением.

Проверку А) можно организовать проверкой только тех ограничений, которые касаются модифицированных данных.

2. изолированность пользователей необходимо в многопользовательских системах. Главная задача изолированности пользователей – создать у каждого пользователя иллюзию, что он работает с БД в одиночку. Изолированная работа означает, что пользователь не видит нарушения данных, связанных с работой других пользователей.

Уровни изолированности:

I. обеспечивает отсутствие потерянных изменений;

II. отсутствие чтения “грязных данных”;

III. отсутствие неповторяющихся чтение.

Рассмотрим I.

 

Т1 модифицирует объект А БД. После окончания Т1 – А’ (модифицированный). Если во время Т1 выполняется Т2, который тоже модифицирует объект, а по окончании Т2 Rollback (откат), то произойдёт восстановление А, т.е. потаря изменения Т1 (А ® А’).

Рассмотрим II.

 

 
 

 

 


Т1 изменяет объект А и параллельно с этим Т2 читает объект А. Т.к. Т1 ещё не завершена, то Т2 видит объект А в несогласованном (“грязном”) состоянии. Чтобы этого избежать, необходимо, чтобы до завершения модификации никакая транзакция на имела право читать объект.

Рассмотрим III.

 
 

 

 


Вторая операция чтения даёт неповторяющиеся данные, т.к. Т2 закончилась commit. Чтобы этого избежать: до завершения Т1 никакая другая транзакция не должна изменять объект А.

Итак, чтобы избежать I, необходимо запретить модификацию, если объект начал модифицироваться другими транзакциями – это минимальное требование для независимости параллельно выполняемых транзакций. Если рассмотреть III, то можно сказать, что условие запрещения модификаций является максимальным требованием. II является промежуточным.

Требование I-го уровня является достаточным для поддержания целостности в простых системах. Чем сложнее связи между данными, тем выше должны быть соблюдаемые условия.

При выполнении всех условий теряется выгода от параллельного использования транзакций. Поэтому запрещать целиком выполнение транзакций – это неэффективное решение.

Параллелизм выполнения транзакций описывается термином: сериализация транзакций.








Дата добавления: 2014-12-20; просмотров: 647;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.