Лабораторные работы. Дятлов / Отчет Базы данных №4
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Программной инженерии
Лабораторная работа
По дисциплине: База данных
Выполнил студент: Яковлев М. А. ИКПИ-32
Принял работу: Дятлов Д. А.
Дата выполнения:
«11» октября 2025 г.
Санкт-Петербург
2025 г.
Цель работы
Цель работы – получение практических навыков в работе с транзакциями и их свойствами.
Ход выполнения
Выполненные действия:
1. Была создана или открыта ранее сохраненная база данных «university» в MySQL Workbench.
2. В базе данных создана таблица «users» с полями id (INT, PK), name (VARCHAR, NN), d_id (INT) и заполнена пятью произвольными записями.
3. Схема базы данных была сгенерирована на сервере MySQL.
Результаты выполнения команд:
Часть 1: Откат транзакции, обрыв связи с базой данных
Была выполнена следующая последовательность команд:
SET AUTOCOMMIT = 0;
START TRANSACTION;
SAVEPOINT sve_point;
DELETE FROM users;
ROLLBACK TO SAVEPOINT sve_point;
DELETE FROM users;
exit;
Результат выполнения команды:
Рисунок 1. Результат команды
После повторного подключения к базе данных и выполнения SELECT * FROM users; было установлено, что таблица users содержит исходные данные. Это демонстрирует, что незавершённая транзакция (без COMMIT) не применяется к базе данных, даже при обрыве соединения. Установка AUTOCOMMIT=0 требует явного подтверждения изменений.
Рисунок 2. Результат команды
Часть 2: Подтверждение транзакции и обрыв связи с базой данных
Была выполнена следующая последовательность команд:
SET AUTOCOMMIT = 0;
START TRANSACTION;
INSERT INTO users (id, name, d_id) VALUES (100, 'Antonio', 1);
COMMIT;
exit;
Результат выполнения команды:
Рисунок 3. Результат команд
Рисунок 3. Результат команды
После повторного подключения к базе данных и выполнения SELECT * FROM users; была обнаружена новая запись с id=100, именем Antonio и d_id=1. Это подтверждает, что после выполнения команды COMMIT изменения фиксируются в базе данных permanently и сохраняются после разрыва соединения.
При повторном запуске видно, что данные сохранены:
Рисунок 4. Результат команд
Выводы
В ходе выполнения работы были закреплены практические навыки работы с транзакциями в MySQL. Были экспериментально подтверждены ключевые свойства транзакций.
Контрольные вопросы
1. Что такое транзакция?
Транзакция — это логическая единица работы с базой данных, которая либо выполняется полностью, либо не выполняется вовсе. Она группирует набор операций в один атомарный блок.
2. Приведите пример синтаксиса транзакции.
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
3. Какими SQL командами должна заканчиваться каждая транзакция?
Транзакция должна завершаться либо командой COMMIT (для сохранения изменений), либо командой ROLLBACK (для отмены всех изменений, сделанных в рамках текущей транзакции).
4. Что такое ACID? Расшифруйте и объясните термины ACID.
ACID — это набор свойств, обеспечивающих надёжную обработку транзакций.
· Атомарность (Atomicity): Транзакция выполняется как единое целое.
· Согласованность (Consistency): Транзакция переводит базу данных из одного корректного состояния в другое.
· Изолированность (Isolation): Параллельные транзакции не влияют друг на друга.
· Долговечность (Durability): Результаты зафиксированной транзакции не могут быть утеряны.
5. Приведите уровни изоляции в порядке от сильного уровня к слабому.
READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
6. Какие существуют режимы AUTOCOMMIT?
Режим AUTOCOMMIT может быть включён (=1), когда каждая отдельная SQL-команда считается транзакцией и автоматически фиксируется, или выключен (=0), когда для фиксации или отката группы команд требуется явно использовать COMMIT или ROLLBACK.
