Back to all questions

ACID - Atomicity

ACIDMiddleSenior
Seen on interview:1 user

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;

Seen on interview?

Comments (0)

Sign in to leave a comment

No comments yet. Be the first!