Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на СУБД.docx
Скачиваний:
9
Добавлен:
30.08.2019
Размер:
146.57 Кб
Скачать

Вложенные транзакции

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

Вложенными называются транзакции, выполнение которых инициируется из тела уже активной транзакции.

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

10. Параллельная работа транзакций

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

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

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

Работа транзакций в смеси

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

  1. Эта операция будет выполнена целиком или не выполнена вовсе (атомарность - все или ничего).

  2. Во время выполнения этой операции не выполняются никакие другие операции других транзакций (строгая очередность элементарных операций).

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

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

Проблемы параллельной работы транзакций

Различают три основные проблемы параллелизма:

  1. Проблема потери результатов обновления.

  2. Проблема незафиксированной зависимости (чтение "грязных" данных).

  3. Проблема несовместимого анализа данных.

11. 1. Проблема потери результатов обновления

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

Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения.

Время

Транзакция A

Транзакция B

Чтение

---

Запись

---

---

Чтение

---

Запись

COMMIT

---

---

COMMIT

 

Потеря результата обновления

 

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