Транзакция: понятие, администратор транзакций, точка фиксации, свойства транзакций, работа транзакций

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

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

Особенность транзакции:

1.Если внутри транзакции происходит сбой или не выполняется хотя бы 1 команда (прерывается), то система осуществляет откат и возвращает БД в состояние, которое было до транзакции.

2.Если удачно завершились все команды тран-и, то система фиксирует новое состояние БД.

Для транзакции используются команды:

1.begin transaction – начало транзакции;

2.commit transaction - закрепление, удачное завершение транзакции;

3.rollback transaction - откат транзакции, восстановление текущего состояния БД.

Различают 2 модели транзакции:

1. Модель автоматического выполнения транзакции – транзакции автоматически начинается с выполнением пользователем или программой первой инструкции - begin. Здесь четко участвуют 3 команды: begin, commit, rollback. и возможны 2 исхода:

2. Модель управляемого выполнения транзакции – появляется еще один оператор, который позволяет внутри транзакции создать – точку сохранения и присвоить сохраненному состоянию имя точки. Здесь наблюдается промежуточные стадии по сохранению транзакции (оператор SAVE TRANSACTION).

В случае неудачного завершения транзакции происходит откат к точке фиксации, кот является промежуточной.

Для сохранения БД и фиксации команд транзакции существует журнал транзакций. Он позволяет во внешней памяти сохранять промежуточные состояния БД в программе.

Точки фиксации позволяют запомнить текущее состояние БД перед транзакцией и в случае отката они являются основой для восстановления данных. Промежуточные точки фиксации в управляемых транзакция называют точками сохранения. Если транзакция завершается удачно, то организуется новая точка фиксации.

Транзакция в результате своей работы воздействует на состояние БД двумя способами:

· Явно – выполняя команды INSERT, DELETE, UPDATE;

· Неявно – возможно влияние на работу других транзакций, когда эти транзакции считывает данные, измененные текущей транзакцией.

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

Свойства транзакции:

1. Атомарность - транзакция выполняется как атомарная операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется.

2. Согласованность - транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.

3. Изоляция – транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: