Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9Транзакции_параллелизм.doc
Скачиваний:
5
Добавлен:
19.09.2019
Размер:
94.21 Кб
Скачать

Лекция 9. ТРАНЗАКЦИИ И ПАРАЛЛЕЛИЗМ

1. Транзакции

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

Поддержание механизма транзакций—показатель уровня развитости СУБД. Корректное поддержание транзакций одновременно является основой обеспечения целостности БД. Транзакции также составляют основу изолированности пользователей во многопользовательских системах.

Под транзакцией понимается неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации), такая, что возможны два итога:

  • результаты всех операторов, входящих в транзакцию, соответствующим образом отображаются в БД;

  • воздействие всех этих операторов полностью отсутствует.

Если транзакция завершена оператором СОММIТ, то результаты фиксируются во внешней памяти: при завершении транзакции оператором ROLL BACK результаты отсутствуют во внешней памяти.

Оператор СОММIТ устанавливает так называемую «точку фиксации», т. е. момент, когда заканчивается логическая единица работы. Следовательно, БД будет находиться в согласованном (целостном) состоянии как в начале, так и в конце транзакции. При завершении транзакции оператором ROLL BACK БД тоже будет находиться в согласованном состоянии, т. к. никакого влияния на данные такая транзакция не окажет. Здесь под согласованностью будем понимать тот факт, что транзакции переводят БД из одного согласованного состояния в другое, т. е. в такое, когда выполняются все условия ограничения целостности и т. п.

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

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

Глобальный сбой полностью действует на СУБД, и обычно выделяют два вида: «сбой системы», нарушающий все выполняемые в данный момент транзакции, но не нарушающий БД физически, «сбой носителей», который представляет собой физическую угрозу для данных.

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

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

Понятие транзакции имеет непосредственную связь с понятием целостности БД. Очень часто БД может обладать такими ограничениями целостности, которые просто невозможно не нарушить, выполняя изменение только одним оператором. Например, в базе данных СТУДЕНТЫ - ПРЕДМЕТЫ - ОЦЕНКИ очевидным ограничением целостности является совпадение значения атрибута в кортеже отношения СТУДЕНТЫ с аналогичным атрибутом отношения ОЦЕНКИ. В этом случае возникает проблема с добавлением новому студенту оценки по экзамену. Независимо от того, какая операция будет выполнена первой, вставка нового кортежа в отношение СТУДЕНТЫ или в отношение ОЦЕНКИ после выполнения операции БД окажется в нецелостном состоянии.

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

Несоблюдение этого условия приводит к тому, что вместо фиксации результатов транзакции происходит ее отмена (т. е. откат транзакции, когда она вместо оператора СОММIТ завершается оператором ROLL BACK), и БД остается в таком состоянии, в котором находилась к моменту начала транзакции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]