Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаб 8

.docx
Скачиваний:
9
Добавлен:
28.06.2021
Размер:
185.6 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Кафедра «Математической кибернетики и информационных технологий»

Лабораторная работа №8

по дисциплине «Интеллектуальные базы данных»

на тему

«Транзакции»

Выполнил:

Студент гр.

Проверил: Фатхулин Т. Д.

Москва 2021

Цель работы

В данной работе необходимо рассмотреть механизм транзакций в СУБД MySQL. Для имеющейся предметной области создать транзакцию, ее откат и фиксацию.

Теоретические сведения

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

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

Транзакция – последовательность операторов SQL, выполняющихся как единая операция, которая не прерывается другими клиентами. Пока происходит работа с записями таблицы (обновление или удаление), никто другой не может получить доступ к этим записям, т. к. MySQL автоматически блокирует доступ к ним.

Таблицы ISAM, MyISAM и HEAP не поддерживают транзакции. В настоящий момент их поддержка осуществляется только в таблицах BDB и InnoDB.

Транзакции позволяют объединять операторы в группу и гарантировать, что все операторы группы будут выполнены успешно. Если часть транзакции выполняется со сбоем, результаты выполнения всех операторов транзакции до места сбоя отменяются, приводя БД к виду, в котором она была до выполнения транзакции.

По умолчанию MySQL работает в режиме автоматического завершения транзакций, т. е. как только выполняется оператор обновления данных, который модифицирует таблицу, изменения тут же сохраняются на диске. Чтобы объединить операторы в транзакцию, следует отключить этот режим: set AUTOCOMMIT=0;

После отключения режима для завершения транзакции необходимо ввести оператор COMMIT, для отката – ROLLBACK.

Включить режим автоматического завершения транзакций для отдельной последовательности операторов можно оператором START TRANSACTION.

Для таблиц InnoDB есть операторы savepoint и rollback to savepoint, которые позволяют работать с именованными точками начала транзакции.

Оператор savepoint устанавливает именованную точку начала транзакции с именем point1. Оператор rollback to savepoint point1 откатывает транзакцию к состоянию, в котором находилась БД на момент установки именованной точки. Все точки сохранения транзакций удаляются, если выполняются операторы commit или rollback без указания имени точки сохранения.

Практическая работа

При выполнении лабораторной работы необходимо:

  • создать транзакцию, произвести ее откат и фиксацию;

  • составить отчет по лабораторной работе.

Ход выполнения

Описание основных команд

После отключения режима для завершения транзакции необходимо ввести оператор COMMIT, для отката – ROLLBACK.

Включить режим автоматического завершения транзакций для отдельной последовательности операторов можно оператором START TRANSACTION.

Для таблиц InnoDB есть операторы savepoint и rollback to savepoint, которые позволяют работать с именованными точками начала транзакции.

Ввод команд

Д ля выполнения задания объединим несколько запросов на добавление новых записей в таблицу users в одну транзакцию, а затем откатим ее (рис. 1):

Рис. 1. Создание и откат транзакции

В оспроизведем транзакцию и сохраним действия с помощью оператора COMMIT (рис. 2):

Рис. 2. Сохранение транзакции

П опробуем откатить данную транзакцию оператором ROLLBACK (рис. 3):

Рис. 3. Попытка откатить сохраненные изменения

Из рисунка 3 видно, что после сохранения изменений их откат не возможен.

Выводы

В данной работе был рассмотрен механизм транзакций. Была составлена транзакция, объединяющая несколько запросов на добавление записей в таблицу users. Данная транзакция была откатана, а после повторена и сохранена.

Соседние файлы в предмете Интеллектуальные базы данных