Краткие теоретические сведения. Транзакция - это последовательность операций над базой данных, рассматриваемых СУБД как единое целое

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

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

Рисунок 1 Отрывок алгоритма взаимодействия журнала транзакций и КЭШ

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

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

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

Ход работы

1 Проверить число активных транзакций, используя глобальную переменную @@TRANCOUNT.

Выполнить:

SELECT @@TRANCOUNT As TranLevel

(указать значение переменной)

BEGIN TRAN

SELECT @@TRANCOUNT As TranLevel

BEGIN TRAN

SELECT @@TRANCOUNT As TranLevel

COMMIT TRAN

SELECT @@TRANCOUNT As TranLevel

ROLLBACK TRAN

SELECT @@TRANCOUNT As TranLevel

(указать значения переменной)

2 Создать 4 транзакции, состоящие из 5 различных операторов языка Transact – SQL:

1-ая транзакция завершается предложением фиксации завершения транзакции (COMMIT);

2-ая транзакция завершается предложением отката выполнения транзакции (ROLLBACK);

3-я транзакция завершается успешным завершением программы;

4-ая транзакция завершается неуспешным завершением программы.

В 1 и 2 случае проверить выполнение операторов, прокомментировать результат. Смоделировать выполнение 3 и 4 транзакции прокомментировать результаты.

3 Разработать транзакцию из 6 операторов (Insert, Update, Delete…). Внутри транзакции предусмотреть точку сохранения. В конце транзакции предусмотреть откат до точки сохранения.

Определить, какие из 6 операторов выполнены, а какие нет. Прокомментировать результат выполнения транзакции.

4 Охарактеризовать по блок-схеме принцип работы журнала транзакций.

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

6 Оформить подробный отчет и сделать вывод по выполненной работе.

Контрольные вопросы

1 Что представляет собой транзакция? Назначение.

2 Создание, выполнение, откат транзакции.

3 Явная транзакция. Пример.

4 Неявная транзакция. Пример.

5 Способы завершения транзакции.

6 Для чего необходимо устанавливать контрольные точки?

7 Что представляет собой журнал транзакций? Назначение.

8 Что произойдет, если транзакция будет содержать большое количество операторов? Что произойдет, если транзакция будет открытой?

9 Каково максимальное количество операторов можно объединить одной транзакцией, чтобы не мешать работе других пользователей?

10 Место КЭШа в работе журнала транзакций.



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



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