트랜잭션(transaction)은 데이터의 일관성과 무결성을 보장하는 하나의 논리적 작업 단위다. 여러 개의 SQL 문장을 하나의 작업으로 묶어서 처리한다.
START TRANSACTION;
UPDATE
account
SET
balance = balance - 10000
WHERE
account_id = 'A';
UPDATE
account
SET
balance = balance + 10000
WHERE
account_id = 'B';
COMMIT;ACID 성질
ACID는 트랜잭션이 안전하게 수행됨을 보장하기 위한 성질을 가리키는 약어다.
- 원자성(Atomicity): 트랜잭션의 모든 작업이 완전히 수행되거나 수행되지 않아야 한다.
- 일관성(Consistency): 트랜잭션 처리 전과 후로 데이터 모순이 없는 상태를 유지해야 한다.
- 고립성(Isolation): 동시에 실행되는 트랜잭션이 서로 영향을 주지 않아야 한다.
- 지속성(Durability): 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다.
동시성 제어
동시성 제어(concurrency control)은 여러 트랜잭션이 동시에 실행될 때 데이터의 일관성을 보장하는 기법이다. 동시성 제어가 없으면 갱신 손실, 오손 읽기 등의 문제가 발생할 수 있다.
참고 문헌
- 핀테크 인턴십 코스 교안
- ACID