Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
baz_dan / Главы8-12.doc
Скачиваний:
64
Добавлен:
12.03.2015
Размер:
1.67 Mб
Скачать

10 .Параллельные процессы (или процесс транзакций)

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

    Транзакцией называется последовательность операций, произведённых над БД и переводящих БД из одного непротиворечивого (согласованного) состояния в другое непротиворечивое (согласованное) состояние.

      Транзакция – это логическая единица работы. Транзакция – это разовый прогон программы.         Транзакция - это единица взаимодействия с базой данных. Логическая единица работы - не просто одиночная операция системы, а скорее согласование нескольких таких операций (например, добавление + изменение какого-либо кортежа). В общем, это преобразование одного согласованного состояния базы данных в другое, причём в промежуточных точках база данных находится в несогласованном состоянии. 

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

        Но система, обеспечивающая процесс транзакции, обеспечивает гарантию, что если во время выполнения неких обновлений произошла ошибка, то все эти обновления будут аннулированы. Таким образом, транзакция или выполняется полностью, или полностью отменяется. Оператор COMMIT TRANSACTION сигнализирует об успешном окончании транзакции. Оператор ROLLBACK TRANSACTION сигнализирует о неудачном окончании транзакции. Все обновления должны быть аннулированы.

Для этого используется файл регистрации (журнал), где записываются детали всех операций обновления. Оператор COMMIT и ROLLBACK завершают транзакцию, а не программу. Программа может выполнять несколько транзакций. Сама программа завершается оператором RETURN.

10.2. Модели транзакций

        В стандарте ANSI/ISO SQL определена модель транзакций. Стандарт определяет, что транзакция начинается с первого SQL-оператора. Все последующие SQL-операторы составляют тело транзакции. Транзакция завершается оператором COMMIT (успешное завершение) или ROLLBACK (прерывает транзакцию) (рис.10.1).

a) b)

Рис.10.1. Выполнение транзакций

а) успешное выполнение, в)аварийное завершение

     

 В некоторых СУБД (например SYBASE) транзакции начинаются явно оператором BEGIN TRANSACTION.

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

Рис.10.2. Выполнение программы Р; Т1 Т2 Т3 - транзакции Транзакция – это не только логическая единица работы, но также единица восстановления. 

3.3. Свойства транзакций

Транзакция обладает 4 свойствами: атомарность, согласованность, изоляция и долговечность (АСИД)  

Атомарность означает, что выполняется всё или ничего.

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

  Изоляция. Транзакции отделены одна от другой. Т.е. любое обновление одной транзакции будет скрыто от     остальных дол тех пор, пока эта транзакция выполняется. Пусть имеем Т1 и Т2. Тогда справедливо  утверждение: Т1 сможет увидеть обновление Т2 только после выполнения Т2, а Т2 сможет увидеть обновление Т1 только после выполнения Т1.

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

Соседние файлы в папке baz_dan