Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Понятие транзакции






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

Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:

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

Транзакция обычно начинается автоматически с момента выполнения запроса и продолжается до тех пор, пока не произойдет одно из следующих событий:

  • Подана команда COMMIT (зафиксировать транзакцию).
  • Подана команда ROLLBACK TRANSACTION (откатить транзакцию).
  • Произошло отсоединение пользователя от СУБД.
  • Произошел сбой системы.

Команда COMMIT завершает текущую транзакцию и автоматически начинает новую транзакцию. При этом гарантируется, что результаты работы завершенной транзакции фиксируются, т.е. сохраняются в базе данных.

Команда ROLLBACK TRANSACTION приводит к тому, что все изменения, сделанные текущей транзакцией откатываются, т.е. отменяются так, как будто их вообще не было. Откат до заданной точки осуществляется командой ROLLBACK TRANSACTION < имя>. При этом автоматически начинается новая транзакция.

При отсоединении пользователя от СУБД происходит автоматическая фиксация транзакций.

Для явной фиксации транзакции в некоторых системах (например, Visual FoxPro, MS SQL Server и др.), требуют начинать транзакцию командой BEGIN TRANSACTION.

Для установления промежуточных точек позволяющих осуществлять откат внутри транзакции используется команда SAVE TRANSACTION < имя>.

 

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

Одним из способов поддержки транзакций является ведение журнала. Журнал транзакций — это структура данных, в которой хранятся записи о планирующихся и выполненных операциях. Работа с ним состоит из трёх шагов:

1. Записать намерение произвести некоторые операции

2. Запись о выполнении задания

3. Записать об отсутствии ошибок

В случае сбоя запускается процедура восстановления, которая просматривает записи журнала следующим образом:

1. Если повреждена запись, то сбой произошёл во время проставления отметки в журнале. Значит, записи на диск нет (возврат к прежнему состоянию БД при повторной загрузки БД), и потери отсутствуют.

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

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

Замечание. Каждая база данных SQL Server имеет как минимум два файла, с ней ассоциирующихся: один файл данных, в котором непосредственно хранятся данные и как минимум один файл журнала транзакций. Журнал транзакций это основной компонент СУБД. Все изменения в БД записываются в журнал транзакций. Используя эту информацию, СУБД может определить какая транзакция, и какие изменения были внесены.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал