Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers v.0.6.docx
Скачиваний:
6
Добавлен:
26.09.2019
Размер:
244.13 Кб
Скачать

9. Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.

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

#: перевод денег в банковской системе. Данная операция может состоять минимум из двух операций: снятие денег с одного счета и принятие денег на др. Если после вып. 1-го действия окажется, что 2-ое совершить невозможно (#: счет закрыт), то возникает неоднознач. ситуация — что будет с деньгами? Для разреш. подобных ситуаций исп. механизм транзакций.

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

Св-во атомарности: транзакция должна быть выполнена в целом или не выполнена вовсе.

Св-во согласованности: при вып. транзакций данные переходят из одного согласованного состояния в др.

Св-во изолированности: транзакции обрабатываются последовательно, изолированно друг от друга (для пользователей — как будто они вып. параллельно).

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

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

Откат транзакции — возвращение БД в состояние до выполнения транзакции. Происходит, если в процессе выполнения транзакции случилось что-то, делающее невозможным ее нормальное завершение.

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

#: неявная фиксация транзакции осуществляется СУБД после выполнения оператора DDL.

#: неявный откат транзакции осуществляется СУБД при неожиданном завершении сессии (#: разрыв сетевого соединения) или при внезапном выключении сервера БД. В последнем случае БД после перезагрузки ОС вернется в последнее согласованное состояние.

3 оператора, предназнач. для управ. транзакциями:

Commit — явная фиксация транзакции.

Rollback — явный откат транзакции.

Savepoint — создание контрольной точки внутри транзакции (промежуточная фиксация транзакции с возможностью отката к этой точке).

# вып. операторов с фиксацией и откатом транзакций:

  1. Транзакция начинается автоматически после установки соединения с БД.

Insert into Managers(Man_ID, Name, Percent) Values(100, ‘Иванов М.А.’, 5);

  1. Промежуточная фиксация транзакции.

Savepoint Insert1OK; 

  1. Выполнение очередной команды DML.

Update Managers Set Percent=15 Where Man_ID=100;

  1. Откат транзакции до точки Insert1OK.

Rollback to Insert1OK; 

  1. Откорректированная команда DML.

Update Managers Set Percent=16 Where Man_ID=100;

  1. Фиксация транзакции и начало новой транзакции.

Commit; 

  1. Очередная команда DML.

Delete from Managers;

  1. Отмена всех изменений в текущей транзакции (возврат БД к состоянию до пункта 6).

Rollback;

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

Журналы транзакций работают по циклич. принципу. Когда 1-й заполнен, происходит переключение журналов и изменения заносятся во 2-й журнал.

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