Транзакция в MySQL - это последовательность операций с базой данных, которая выполняется как единое целое. Транзакции обеспечивают целостность данных, даже если система выйдет из строя во время выполнения операций.

Содержание

Транзакция в MySQL - это последовательность операций с базой данных, которая выполняется как единое целое. Транзакции обеспечивают целостность данных, даже если система выйдет из строя во время выполнения операций.

Основные свойства транзакций (ACID)

  • Атомарность (Atomicity) - все операции выполняются или ни одна
  • Согласованность (Consistency) - данные остаются в согласованном состоянии
  • Изолированность (Isolation) - транзакции не мешают друг другу
  • Долговечность (Durability) - результаты успешных транзакций сохраняются

Команды для работы с транзакциями

КомандаОписание
START TRANSACTIONНачинает новую транзакцию
COMMITПодтверждает изменения
ROLLBACKОтменяет изменения
SAVEPOINTСоздает точку сохранения внутри транзакции

Пример простой транзакции

  1. START TRANSACTION;
  2. UPDATE accounts SET balance = balance - 100 WHERE id = 1;
  3. UPDATE accounts SET balance = balance + 100 WHERE id = 2;
  4. COMMIT;

Уровни изоляции транзакций

1. READ UNCOMMITTED

  • Самый низкий уровень изоляции
  • Возможны "грязные" чтения

2. READ COMMITTED

ПреимуществаНедостатки
Защита от "грязных" чтенийВозможны неповторяющиеся чтения

3. REPEATABLE READ (по умолчанию в MySQL)

  • Защита от неповторяющихся чтений
  • Возможны фантомные чтения

4. SERIALIZABLE

  • Самый высокий уровень изоляции
  • Полная изоляция транзакций

Типы таблиц, поддерживающие транзакции

  • InnoDB (по умолчанию в современных версиях MySQL)
  • NDB (для кластерных конфигураций)
  • Falcon (экспериментальный движок)

Когда использовать транзакции

  1. Финансовые операции (переводы между счетами)
  2. Сложные многошаговые операции
  3. Когда требуется атомарность изменений
  4. При работе с критически важными данными

Ограничения транзакций

  • Не все движки таблиц поддерживают транзакции
  • Могут снижать производительность
  • Требуют больше ресурсов
  • Длительные транзакции могут блокировать другие операции

Другие статьи

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