Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы 25-30.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
198.14 Кб
Скачать
  1. Модели транзакций. Журналы транзакций, способы заверения транзакций.

Модели транзакций.  Транзакцией называется последовательность операций, производимых над БД и переводящих БД из одного непротиворечивого (согласованного) состояния в другое непротиворечивое состояние.  Транзакция рассматривается как некоторое неделимое действие над БД, осмысленное с точки зрения пользователя. В то же время это логическая единица работы системы. Разработчик БД определяет семантику совокупности операций на БД, которая моделирует с точки зрения разработчика некоторую одну неразрывную работу (это и составляет транзакцию).  Например, принимается заказ в фирме на изготовление компьютера. Компьютер состоит из комплектующих, которые сразу резервируются за данным заказом в момент его оформления. Тогда транзакцией будет вся последовательность операций, включающая следующие:

  • ввод нового заказа со всеми реквизитами заказчика;

  • изменения состояния для всех выбранных комплектующих на складе на "занято" с привязкой к определенному заказу;

  • подсчет стоимости заказа с формированием платежного документа (например, выставляемого счета к оплате);

  • включение нового заказа в производство.

С точки зрения работника - это единая последовательность операций. Если она будет прервана, то БД потеряет свое целостное состояние. 

Журнал транзакций.  Реализация в СУБД принципа сохранения промежуточных состояний, подтверждения или отката транзакции обеспечивается специальным механизмом, для поддержки которого создается некоторая системная структура, называемая журналом транзакций. Он предназначен для обеспечения надежного хранения данных в БД, а также для возможности восстановления согласованного состояния БД после любого рода аппаратных и программных сбоев. Для выполнения восстановления необходима некоторая дополнительная информация, которая поддерживается в виде журнала изменений в БД. Журнализация и восстановление тесно связаны с понятием транзакции.  Общие принципы восстановления:

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

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

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

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

    • оператор ROLLBACK;

    • аварийное завершение программы;

    • принудительный откат транзакции в случае взаимной блокировки при параллельном выполнении транзакций. Для выхода из тупика данная транзакция может быть выбрана в качестве "жертвы" и принудительно прекращено ее выполнение ядром СУБД.

  2. восстановление после внезапной потери содержимого ОП (мягкий сбой). Случаи:

    • при аварийном выключении электропитания;

    • при возникновении неустранимого сбоя процессора. Такая ситуация характеризуется потерей той части БД, которая к моменту сбоя содержалась в буферах ОП.

  3. восстановление после поломки основного внешнего носителя БД (жесткий сбой). Происходит очень редко, но тем не менее СУБД должна быть в состоянии восстановить базу данных даже в этом случае. Основой восстановления является архивная копия и журнал изменений БД.

Возможны два основных варианта ведения журнальной информации:

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

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

Достоинства:

  • Позволяет выполнять индивидуальные откаты транзакций.

Недостатки:

  • Приводит к дублированию информации в локальном и общем журналах, => лучше использовать второй вариант.

Варианты завершения транзакций:

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

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