Transaction
단일한 논리적인 작업의 단위
논리적인 이유로 여러 SQL문들을 하나의 단위로 묶어 나눠질 수 없게 만든 것
예시
A가 B에게 계좌이체를 한다고 가정해보자
1.[A 계좌에서 출금] 을 하고 2.[B계좌에 입금]을 하는 과정이 필요할 것이다.
UPDATE account SET balance = balance - 1,000,000 WHERE id = A
UPDATE account SET balance = balance + 1,000,000 WHERE id = B
그런데 이 과정에서 1번만 성공하고 2번은 실패하는 경우 A의 100만원이 증발하고 1번은 실패했는데 2번만 성공하는 경우 없는 돈 100만원이 B에게 생기게 된다.
논리적으로 '이체'라는 작업은 저 둘의 Query문이 하나의 단위로 이루어져야 의미가 있다.
즉 모두 반영되거나 모두 반영되지 않아야 한다는 것이다.
ACID
Transaction이 어떤 속성을 지녀야 하는지 나타내는 개념
원자성(Atomicity)
일관성(Consistency)
고립성(격리성)(Isolation)
지속성(Durablity)