tgoop.com/big_data_systems_analysis/25
Create:
Last Update:
Last Update:
Atomicity — Атомарность
Выше мы разговаривали о требованиях ACID (хэштег #acid). Рассмотрим каждое требование подробнее.
Атомарность гарантирует, что каждая транзакция выполнится целиком или не будет выполнена вовсе. Третьего не дано. Если в любой операции транзакции случился сбой, то все операции транзакции будут отменены и данные вернутся в исходное состояние.
Само понятие транзакции включает себя это требование. Транзакция — неделимый набор операций.
Простейший пример транзакции:
BEGIN;Ольга перевела 5000 у.е. Ивану, в результате со счёта Ольги списались 5000, а Ивану зачислились 5000. Если, к примеру, во время зачисления средств на счёт Ивана произошёл сбой (н-р, счёт Ивана не был найден), то и списание средств со счёта Ольги не произошло. Аналогично сработает, если на счету у Ольги не окажется нужной суммы для перевода, то и Ивану тогда ничего не зачислится.
UPDATE accounts SET balance = balance - 5000.00
WHERE name = 'Olga';
UPDATE accounts SET balance = balance + 5000.00
WHERE name = 'Bob';
COMMIT;
ROLLBACK;
Чтобы обеспечить атомарность, СУБД используют механизмы логирования и отката. Логирование позволяет записывать все изменения, внесенные в базу данных, в журнал транзакций. В случае сбоя или ошибок СУБД использует журнал для отмены изменений, внесенных этой транзакцией.
#sql #acid
BY В мире больших данных
Share with your friend now:
tgoop.com/big_data_systems_analysis/25