Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Управление транзакциями. Данные повтора и отката.






 

Понятие транзакции

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

 

- Неделимость или атомарность (atomicity). Выполняются все операции, составляющие транзакцию, либо не выполняется ни один.

- Согласованность (consistency) – на момент начала выполнения транзакции и после окончания БД находится в согласованном состоянии.

- Изолированность (isolation) – результаты работы транзакции становятся доступны другим сессиям только после ее фиксации (либо отката).

- Продолжительность (durability) – изменения становятся постоянными после фиксации транзакции.

 

Все эти свойства реализованы в СУБД Oracle 10g. Транзакция начинается с выполнения первого SQL-выражения (не требуется специальной команды начала транзакции) и заканчивается либо фиксацией (commit), либо откатом (rollback) транзакции.

Для управления транзакциями существуют следующие команды, составляющие специальное подмножество команд SQL (transaction control statements):

 

COMMIT – фиксирует результаты текущей транзакции и делает все сделанные ею изменения постоянными.

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

SAVEPOINT < метка сохранения> – позволяет в транзакции, состоящей более чем из одного оператора, ставить метки, разбивая транзакцию на этапы.

ROLLBACK TO < метка сохранения> - используется совместно с SAVEPOINT. Позволяет откатить транзакцию до указанной точки сохранения.

SET TRANSACTION – настройка параметров транзакции, как, например, явное указание сегмента отката для конкретной транзакции.

 

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

 

Транзакция начинает работу с согласованными данными и заканчивает работу, приводя затрагиваемые ею объекты в согласованное состояние.

Например, представим некую банковскую систему, в которой осуществляется перенос (трансфер) некоторой суммы со счета на счет. Процедура включает 3 этапа: снятие с одного счета, добавение на другой, отметка факт переноса. Они должны выполниться одной транзакцией, ибо сбой при выполнении одного из этапов приведет к рассогласованию данных. Согласованность будет обеспечена сервером Oracle, и, при наступлении, например, аппаратного сбоя во время транзакции, все изменения, выполенные с момента начала транзакции и не зафиксированные ею, будут отменены, или откачены.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.