- •Распределенные информационные системы и обработка транзакций Понятие транзакции в информационной системе.
- •Свойства транзакции.
- •Выполнение транзакций.
- •Откат и фиксация транзакций.
- •Механизм блокировок. Уровни и типы блокировок.
- •Протокол двухфазовой фиксации транзакций
- •Стратегии обработки транзакций
Свойства транзакции.
Транзакции характеризуются четырьмя классическими свойствами (ACID): атомарности (Atomicity), согласованности (Consistency), изолированности (Isolation), долговечности (Durability).
1.Свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.
2.Свойство согласованности означает, что транзакция не разрушает взаимной согласованности данных, т.е. по мере ее выполнения данные переходят из одного согласованного состояния в другое. Согласованным считается состояние базы, когда выполняются все ограничения физической и логической целостности базы данных. Считается, что на момент старта базы данных она находится в корректном состоянии, допускается нарушение ограничений целостности в течение транзакции, но на момент завершения все ограничения целостности, как физические, так и логические, должны быть соблюдены.
3.Свойство изолированности означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно.
4.Свойство долговечности означает следующее: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах.
Транзакцию, удовлетворяющую условиям ACID, называют еще плоской транзакцией. Транзакция начинается с первого SQL-оператора, инициируемого пользователем или содержащегося в программе. Все последующие SQL-операторы составляют тело транзакции. Структура такой транзакции очень проста:
Начало транзакции ->
Действие 1 -> ... Действие N ->
Конец транзакции
Для такой транзакции нет никаких промежуточных точек фиксации работы, которую она выполняет между Началом транзакции и Концом транзакции.
Для СУБД операции с данными делятся на следующие категории:
операции чтения данных (select);
операции записи данных (insert, delete, update);
операции определения объектов данных (create/alter/drop user, role, table, view, synonym, stored procedure, trigger и т.п.);
операции синхронизации (connect, disconnect, begin transaction, commit/rollback transaction).
Выполнение транзакций.
В стандарте ANSI/ISO SQL определены специальные операторы COMMIT и ROLLBACK.
•оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции;
•оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в базе данных в рамках этой транзакции.
Транзакция завершается одним из четырех возможных путей (рис.1):
1) успешное завершение транзакции;
прерванная транзакция; новая транзакция начинается непосредственно после использования ROLLBACK;
успешное завершение всей программы (как будто был использован оператор COMMIT);
ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).
Если все операторы выполнены успешно и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.
