Профтемы студенту и преподавателю
Taketop.ru
СТУДЕНТУ И ПРЕПОДАВАТЕЛЮ
лекции по дисциплинам
Информатика и вычислительная техника :: Разработка и эксплуатация удаленных баз данных
Транзакции
Транзакцией называется последовательность операций, производимых над БД и переводящих БД из одного непротиворечивого (согласованного) состояния в другое непротиворечивое состояние.
б) Свойства транзакций
Модели транзакций классифицируются на основании различных свойств:
 структура транзакции
 параллельность внутри транзакции
 продолжительность
Типы транзакций:
1. Плоские (классические)
2. Цепочечные
3. Вложенные
Для поддержания целостности используемых ресурсов транзакция должна обладать свойствами ACID (ACID - Atomicity, Consistency, Isolation, Durability.)
Плоские транзакции характеризуются 4 классическими свойствами:
 атомарность;
 согласованность;
 изолированность;
 долговечность (прочность).
в) SQL-выражения для управления транзакциями
Для управления транзакциями имеется три выражения:
SET TRANSACTION - Начинает транзакцию и определяет ее поведение.
COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.
ROLLBACK - Отменяет изменения, внесенные транзакцией, и завершает транзакцию.
Синтаксис команды SQL для запуска транзакции:
SET TRANSACTION [Access mode] [Lock Resolution]
[Isolation Level] [Table Reservation]
г) Варианты завершения транзакций:
Если все операторы выполнены успешно и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, то транзакция фиксируется.
Если в процессе выполнения транзакций случилось нечто такое, что делает невозможным ее нормальное завершение, БД должна быть возвращена в исходное состояние.
Каждый оператор в транзакции выполняет свою часть работы, но для успешного завершения всей работы в целом, требуется безусловное завершение всех их операторов.
В стандарте ANSI/ISO SQL транзакция завершается одним из 4-х возможных путей:
1. Оператор COMMIT означает успешное завершение транзакции, его использование делает постоянными изменения, внесенные в БД в рамках текущей транзакции.
2. Оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в БД в рамках этой транзакции. Новая транзакция начинается непосредственно после использования ROLLBACK.
3. Успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (как будто был использован оператор COMMIT).
4. Ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).
д) Журнал транзакций.
Журнал транзакций хранит все изменения, которые были сделаны в базе данных.
Реализация в СУБД принципа сохранения промежуточных состояний, подтверждения или отката транзакции обеспечивается специальным механизмом, для поддержки которого создается некоторая системная структура, называемая журналом транзакций. Он предназначен для обеспечения надежного хранения данных в БД, а также для возможности восстановления согласованного состояния БД после любого рода аппаратных и программных сбоев. Для выполнения восстановления необходима некоторая дополнительная информация, которая поддерживается в виде журнала изменений в БД. Журнализация и восстановление тесно связаны с понятием транзакции.

Общие принципы восстановления:

1. Результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии БД.
2. Результаты незафиксированных транзакций должны отсутствовать в восстановленном состоянии БД.

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

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

Ведение журнала по принципу отложенных изменений предполагает следующий механизм выполнения транзакций:
1. Когда транзакция (T1) начинается, в протокол заносится запись 1 T1.Begin.Transaction.
2. На протяжении выполнения транзакции в протоколе для каждой изменяемой записи заносится новое значение: 2 T1, TD_RECORD,< атрибут, новое значение,...>, где ID_RECORD - уникальный номер записи.
3. Если все действия, из которых состоит транзакция T1, успешно выполнены, то транзакция частично фиксируется и в протокол заносится: 3 T1.COMMIT.
4. После того как транзакция фиксирована, записи протокола, относящиеся к T1, используются для внесения соответствующих изменений в БД.
5. Если происходит сбой, то СУБД просматривает протокол и выясняет какие транзакции необходимо переделать. Транзакцию T1 необходимо переделать, если протокол содержит обе записи (1, 3).
6. Если в протоколе не содержится команда фиксации транзакции COMMIT, то никаких действий проводить не требуется, а транзакция запускается заново.

Для восстановления при сбое используется следующий механизм:
1. Если транзакция содержит команду начала транзакции, но не содержит команды фиксации (COMMIT), то выполняется последовательность действий, как при откате транзакции (т.е. восстанавливаются старые значения).
2. Если сбой произошел после выполнения последней команды изменения БД, но до команды фиксации, то команда фиксации выполняется, а с БД никаких изменений не происходит, т.е. работа происходит только на уровне протокола.
Изменения заносятся как в журнал транзакций, так и в БД не сразу, а сначала буферируются.
е) Транзакции в Microsoft .NET
Вызов хранимой процедуры (stored procedure), которая заключает необходимые операции в операторы BEGIN TRANSACTION и COMMIT/ROLLBACK TRANSACTION, дает наилучшую производительность, позволяя выполнить транзакцию с разовым обменом данными с сервером (single round-trip). Кроме того, транзакции баз данных могут быть вложенными, т. е. внутри активной транзакции можно начать выполнение новой транзакции.
Работы, представленные на сайте http://taketop.ru, предназначено исключительно для ознакомления. Все права в отношении работ и/или содержимого работ, представленных на сайте http://taketop.ru, принадлежат их законным правообладателям. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие или полученные в связи с использованием работ и/или содержимого работ, представленных на сайте http://taketop.ru
Рейтинг@Mail.ru
Сайт управляется SiNG cms © 2010-2015