121
необходимости отмены некоторого обновления система использует
соответствующий файл регистрации для возвращения объекта в
первоначальное состояние.
10.1. Восстановление транзакции
Транзакция начинается с успешного выполнения оператора Begin
Transaction и заканчивается успешным выполнение либо оператора
Commit, либо оператора Rollback. Оператор Commit устанавливает так
называемую точку фиксации, которая соответствует концу логической
единице работы и , следовательно, точке, в которой база данных находится
в согласованном состоянии. Выполнение же оператора Rollback
возвращает базу данных в состоянии,
в котором она находилась во время
выполнения оператора Begin Transaction, т.е. в предыдущую точку
фиксации.
Из этого следует, что транзакция – это не только логическая единица
работы, но и также единица восстановления при неудачном выполнении
операций.
Таким образом, транзакции обладают четырьмя важными
свойствами: атомарность, согласованность, изоляция и долговечность.
Атомарность. Транзакции атомарны (выполняется все
или ничего).
Согласованность. Транзакции защищают БД согласованно, т.е.
транзакции переводят одно согласованное состояние БД в другое без
обязательной поддержки согласованности в промежуточных точках.
Изоляция. Транзакции отделены друг от друга. Это означает, что при
запуске множества конкурирующих друг с другом транзакций, любое
обновление определенной транзакции будет скрыто от остальных до
тех
пор, пока эта транзакция выполняется.
Долговечность. Когда транзакция выполнена, ее обновления сохраняются,
даже если в следующий момент произойдет сбой системы.
10.2 Восстановление системы
Система должна быть готова к восстановлению не только после
небольших локальных нарушений, таких как невыполнение операции в
пределах определенной транзакции, но также и после глобальных
нарушений типа сбоев питания ЦПУ. Местное нарушение по определению
поражает только транзакцию, в которой оно произошло. Глобальное
нарушение поражает сразу все транзакции, что приводит к значительным
для системы последствиям.
Существует два вида глобальных нарушений:
Отказы системы (например, сбои в питании), поражающие все
выполняющиеся в данный момент транзакции, но физически не
разрушающие базу данных в целом. Такие нарушения в системе также
называют аварийным отказом программного обеспечения.