![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Понятие транзакции
Определение. Транзакция - это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние. Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:
Транзакция обычно начинается автоматически с момента выполнения запроса и продолжается до тех пор, пока не произойдет одно из следующих событий:
Команда COMMIT завершает текущую транзакцию и автоматически начинает новую транзакцию. При этом гарантируется, что результаты работы завершенной транзакции фиксируются, т.е. сохраняются в базе данных. Команда ROLLBACK TRANSACTION приводит к тому, что все изменения, сделанные текущей транзакцией откатываются, т.е. отменяются так, как будто их вообще не было. Откат до заданной точки осуществляется командой ROLLBACK TRANSACTION < имя>. При этом автоматически начинается новая транзакция. При отсоединении пользователя от СУБД происходит автоматическая фиксация транзакций. Для явной фиксации транзакции в некоторых системах (например, Visual FoxPro, MS SQL Server и др.), требуют начинать транзакцию командой BEGIN TRANSACTION. Для установления промежуточных точек позволяющих осуществлять откат внутри транзакции используется команда SAVE TRANSACTION < имя>.
При сбое системы и последующем ее запуске происходит анализ выполнявшихся до момента сбоя транзакций. Те транзакции, для которых была выполнена команда COMMIT, но результаты работы которых не были занесены в базу данных выполняются заново (накатываются). Те транзакции, для которых не была выполнена команда COMMIT, откатываются (восстанавливается прежнее состояние БД). Одним из способов поддержки транзакций является ведение журнала. Журнал транзакций — это структура данных, в которой хранятся записи о планирующихся и выполненных операциях. Работа с ним состоит из трёх шагов: 1. Записать намерение произвести некоторые операции 2. Запись о выполнении задания 3. Записать об отсутствии ошибок В случае сбоя запускается процедура восстановления, которая просматривает записи журнала следующим образом: 1. Если повреждена запись, то сбой произошёл во время проставления отметки в журнале. Значит, записи на диск нет (возврат к прежнему состоянию БД при повторной загрузки БД), и потери отсутствуют. 2. Если все записи отмечены как успешно выполненные, то сбой произошёл между транзакциями (данные успешно сохранены на диске), здесь также нет потерь. 3. Если в журнале есть незавершённая транзакция, то сбой произошёл во время записи на диск. В этом случае восстанавливается старая версия данных из сегмента отката (область, в которой хранится копия всех изменяемых в ходе транзакции данных). Замечание. Каждая база данных SQL Server имеет как минимум два файла, с ней ассоциирующихся: один файл данных, в котором непосредственно хранятся данные и как минимум один файл журнала транзакций. Журнал транзакций это основной компонент СУБД. Все изменения в БД записываются в журнал транзакций. Используя эту информацию, СУБД может определить какая транзакция, и какие изменения были внесены.
|