Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD.doc
Скачиваний:
13
Добавлен:
22.04.2019
Размер:
507.9 Кб
Скачать
  1. Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.

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

Например, перевод денег с одного счета на другой в банковской системе. Данная операция может состоять минимум из двух операций: снятие денег с одного счета (один оператор UPDATE или DELETE) и принятие денег на другой счет (еще один оператор UPDATE или INSERT). Если после выполнения первого действия оказывается, что второе действие совершить невозможно (например, счет закрыт), то возникает неоднозначная ситуация – куда в итоге денутся деньги? Для разрешения подобных ситуаций и используют механизм транзакций.

Традиционные транзакции, характеризуются четырьмя классическими свойствами: атомарностью, согласованностью, изолированностью, долговечностью (прочности) — ACID (Atomicity, Consistency, Isolation, Durability). Иногда традиционные транзакции называют ACID-транзакциями. Упомянутые выше свойства означают следующее.

  1. Свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.

  2. Свойство согласованности гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое.

  3. Свойство изолированности означает, что транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно.

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

Если все операторы выполнены успешно, и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.

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

Кроме выполнения явной фиксации транзакции (COMMIT) или явного отката транзакции (ROLLBACK) существует возможность неявного выполнения этих команд, то есть без непосредственного указания одной из этих двух команд пользователем.

Неявная фиксация транзакции, например, осуществляется самой СУБД в том случае, когда выполняется один из операторов DDL (CREATE, ALTER или DROP).

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

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