Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Транзакции в mysql

Транзакции являются механизмами обеспечения целостности БД, особенно при ошибках или отказе сервера.

Определение транзакций

Определение 1

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

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

Транзакции должны удовлетворять четырем требованиям, которые описываются понятием соответствия ACID (постоянство, изоляция, целостность, атомарность):

  • Атомарность – транзакция должна выполняться полностью или не выполняться совсем.
  • Целостность – после проведения транзакции база данных должна оставаться в целостном состоянии.
  • Изоляция – пока транзакции не завершены, они должны быть изолированными, т.е. их не должны видеть другие пользователи базы данных.
  • Постоянство – итоги выполнения транзакции после их сохранения в БД должны быть постоянными и долговременными.
Определение 2

Подтвержденной называют транзакцию, итог выполнения которой записан в БД.

Определение 3

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

«Транзакции в mysql» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Использование транзакции в сочетании с таблицами InnoDB

MySQL по умолчанию работает в режиме автоматического подтверждения. Т.е. результат выполнения каждого оператора сразу записывается в БД (подтверждается).

Для отключения режима автоматического подтверждения в текущем сеансе нужно ввести команду:

Транзакции. Автор24 — интернет-биржа заказчиков и авторов

При включенном режиме автоматического подтверждения транзакция должна начинаться с оператора

Транзакции. Автор24 — интернет-биржа заказчиков и авторов

При отключенном режиме автоматического подтверждения данная команда не нужна, т.к. транзакция автоматически запускается после ввода оператора SQL.

После завершения ввода операторов, которые образуют транзакцию, их подтверждают в базе данных следующей командой:

commit;

К предыдущему состоянию БД можно вернуться командой:

rollback;

До подтверждения транзакции она не будет видна в других сеансах или другими пользователями.

Пример 1

Пример.

Преобразуем 2 таблицы orders и order_items базы данных в таблицы InnoDB:

alter table orders type = innodb;

alter table order_items type = innodb;

Для обратного преобразования при необходимости можно воспользоваться этим же оператором, но с параметром type = MyISAM.

Откроем 2 соединения с базой данных. В одном из них добавим новую запись заказа:

insert into orders values (5, 1, 400.00, '2016-08-15');

insert into order_items values (5, '0-2-1', 1);

Проверим видимость нового заказа:

*select from orders where orderid = 5;**

Заказ должен отображаться в выходной информации:

Транзакции. Автор24 — интернет-биржа заказчиков и авторов

При открытом текущем состоянии нужно перейти к другому соединению и выполнить такой же запрос select. Заказ не должен быть отображен в выводе. Если заказ отображается, значит не был отключен режим автоматического подтверждения или таблица не была преобразована в формат InnoDB. Это обусловлено тем, что транзакция еще не подтверждена.

Для исправления ситуации нужно вернуться к первому соединению и подтвердить транзакцию:

commit;

Если все сделано правильно, соответствующая строка должна быть отображена в выводе и во втором соединении.

Дата написания статьи: 29.08.2016
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot