Ответ
Транзакция — это логическая единица работы с базой данных, которая либо выполняется полностью (commit), либо не выполняется вовсе (rollback), гарантируя целостность данных даже в случае сбоев. Это реализуется через свойства ACID:
- Atomicity (Атомарность): Все операции транзакции выполняются как одно целое. Невозможно частичное выполнение.
- Consistency (Согласованность): Транзакция переводит базу из одного согласованного состояния в другое, соблюдая все бизнес-правила и constraints (ограничения).
- Isolation (Изолированность): Параллельные транзакции не должны влиять друг на друга. Уровни изоляции (Read Committed, Repeatable Read, Serializable) определяют степень этого влияния и компромисс с производительностью.
- Durability (Долговечность): После успешного завершения (commit) изменения, внесенные транзакцией, сохраняются навсегда, даже в случае сбоя системы.
Практический пример на SQL:
BEGIN TRANSACTION; -- Начало транзакции
UPDATE accounts SET balance = balance - 100.00 WHERE id = 1; -- Списание
UPDATE accounts SET balance = balance + 100.00 WHERE id = 2; -- Зачисление
-- Предположим, здесь проверяется, что баланс не ушел в минус.
-- Если всё успешно:
COMMIT; -- Фиксация изменений
-- Если что-то пошло не так (например, недостаточно средств):
-- ROLLBACK; -- Откат всех изменений в этой транзакции
В приложениях я использую транзакции для операций, которые должны быть атомарными: финансовые переводы, регистрация пользователя (создание записи + отправка письма), синхронное обновление нескольких связанных таблиц.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶