transactionconsistency

transaction과 ACID를 설명해 주세요

예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

Atomicity와 Consistency는 어떻게 다른가요?

부가 설명

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

중간에 실패하면 rollback되어 한쪽만 반영되는 상태를 피해야 합니다.

ACID는 결제, 예약, 재고 차감처럼 여러 변경이 하나의 의미를 가질 때 드러납니다. 일부 변경만 반영되면 데이터가 실제 업무 상태와 어긋나기 때문에 transaction이 필요합니다.

다만 isolation을 강하게 하면 동시성이 줄고 성능 비용이 생길 수 있습니다. 그래서 isolation level을 상황에 맞게 선택합니다.

한 줄 정리

transaction은 여러 DB 작업을 하나의 의미 있는 단위로 묶고, ACID는 그 단위가 안전하게 실행되기 위한 성질입니다.