PRO

Что такое транзакция в SQL? Что такое ACID?

Транзакция — это группа SQL‑операций, которая выполняется как единое целое: либо все изменения фиксируются командой COMMIT, либо при ошибке откатываются через ROLLBACK. Свойства ACID (Atomicity, Consistency, Isolation, Durability) описывают, какими качествами должна обладать корректная транзакция.
Подробный ответ

Транзакция в SQL

Транзакция — это последовательность SQL‑операций (например, несколько INSERT/UPDATE/DELETE), которая рассматривается как одна логическая единица работы. Либо все изменения этой последовательности фиксируются в базе командой COMMIT, либо при ошибке откатываются через ROLLBACK, возвращая данные в исходное состояние.

Простой пример: перевод денег между счетами. Операции UPDATE accounts SET balance = balance - 100 WHERE id = ... и UPDATE accounts SET balance = balance + 100 WHERE id = ... должны либо обе выполниться, либо обе отмениться.

Свойства ACID

ACID — это аббревиатура четырёх свойств транзакций:

  • Atomicity (атомарность) — транзакция неделима: либо все операции внутри неё выполняются, либо ни одна не применяется.

  • Consistency (согласованность) — после завершения транзакции база остаётся в согласованном состоянии и удовлетворяет всем ограничениям (например, NOT NULL, UNIQUE, внешним ключам FOREIGN KEY).

  • Isolation (изоляция) — параллельные транзакции не должны мешать друг другу; каждая транзакция ведёт себя так, как будто она выполняется в одиночку (в зависимости от уровня изоляции: READ COMMITTED, REPEATABLE READ, SERIALIZABLE и др.).

  • Durability (надёжность) — после COMMIT изменения не потеряются даже при сбое системы: они записаны на устойчивое хранилище.

Как ответить на собеседовании

Транзакция — это набор SQL‑операций, который либо выполняется целиком, либо откатывается. Свойства ACID гарантируют, что транзакции атомарны, сохраняют согласованность данных, изолированы друг от друга и их результат сохраняется надёжно. Для junior полезно уметь привести пример с переводом денег и объяснить смысл BEGIN/COMMIT/ROLLBACK.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге