Курсовые работы, лабораторные, доклады для студентов
можете скачать и поделиться с другими,
если не жалко.

 
на правах рекламы


Управление транзакциями.


Вопрос № 20. Управление транзакциями.


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


Транзакция может быть простой (добавление строк в таблицу) или сложной (состоящей из обработки десятков таблиц). Т.е. транзакция является логической единицей работы с БД. Каждая транзакция может быть завершена только 2-мя способами:
1) Commit – благополучное завершение транзакции
2) Rollback – откат транзакции (отмена всех изменений в БД)

Транзакция обладает следующими свойствами: 1) Неделимость (транзакция либо полностью выполняется, либо не выполняется вовсе); 2) Долговечность (результаты выполнения транзакции фиксируются в БД и после этого никаким образом не могут быть изменены); 3) Изолированность (даже одновременно начавшиеся транзакции выполняются независимо друг от друга); 4)Согласованность (гарантия того, что транзакция не даст возможности базе данных содержать несогласованные данные).
Транзакция может стартовать явно или неявно. Явное начало транзакции осуществляется командой: Begin transaction. Неявный старт транзакции инициируется при поступлении первого SQL оператора.

Если в программе нет ни одной команды Commit или Rollback, то вся программа рассматривается как одна транзакция.
Некоторые СУБД поддерживают расширенную модель транзакции, которая позволяет создавать контрольные точки внутри транзакции с помощью команды Save transaction .

Журнал транзакции. Каждая СУБД имеет средства создания и ведения журнала транзакций. Каждая запись журнала хранит следующую информацию:
1) Тип записи (вставка, удаление, обновление);
2) Идентификатор элемента данных, используемых в транзакции (таблица в целом и отдельные столбцы);
3) Значение элемента данных до и после обновления;
4) Служебная информация (ссылки на предыдущие и последующие записи данной транзакции).

Журнал транзакций используется для восстановления данных в случае «легких» сбоев. К ним относится потеря данных, находящихся в оперативной памяти. В случае «жестких» сбоев (повреждение физического устройства диска с БД) содержимое БД восстанавливается из резервных копий.

Журнал копий ведется 2-мя способами:
1) Метод отложенного обновления;
2) Метод немедленного обновления.

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

Параллельное выполнение транзакций. При параллельном выполнении транзакции существуют следующие проблемы: 1) Проблема потерянного обновления; 2)Проблема зависимости от незафиксированного результата; 3)Проблема чтения несогласованных данных.

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

Для ускорения выполнения транзакций используется 2 метода блокировок:
1) Мягкая (Shared)-элемент доступен другим транзакциям, но в режиме чтения и для выполнения всего 1 операции (select);
2) Жесткая (Exclusive)-полностью закрывает элемент при вставке, удалении и обновлении.
Недостаток: вероятность появления тупиков.
Тупик - ситуация, которая никогда не разрешится, т.е. процесс ждет ресурса, но он ему не будет выделен.

Комментарии:

Оставить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.