Devs Hive
Повернутися до всіх запитань

ACID - Atomicity

ACIDMiddleSenior
Зустрічали на інтервʼю:1 користувач

Atomicity - це характеристика, яка означає, що транзакція або виконається повністю, або не виконається взагалі. Якщо в процесі виконання стається помилка, але транзакція вже змінила щось в базі даних, то ці зміни НЕ будуть застосовані, а стан повернеться до початкового - це називається ROLLBACK. Якщо ж транзакція успішна, то буде виконаний COMMIT і зміни будуть застосовані до бази даних.

Розглянемо пиклад

Тут ми вираховуємо кошти з балансу користувача id=1 і зараховуємо їх на баланс користувача id=2. Це дві окремі операції, але якщо хоча б одна з них не буде виконана - це порушить ціліснісь даних.

Так як ми огорнули ці операції в одну транзакцію, то згідно Atomicity всі вони мають завершитись успішно. Якщо кошти були зняті в id=1, але при зарахуванні їх для id=2 сталась помилка, відбудеться ROLLBACK і стан бази даних буде повернутий в BEGIN(Початковий).

BEGIN;

UPDATE accounts
SET balance = balance - 100
WHERE id = 1;

UPDATE accounts
SET balance = balance + 100
WHERE id = 2;

COMMIT;

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!