트랜잭션(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