정의
트랜잭션이란 DB의 상태를 변경시키는 작업의 단위입니다.
예를 들어 A가 B에게 100만원을 계좌이체 하는 상황을 생각해 봅시다.
- A계좌에서 100원을 인출한다.
- B계좌에 100만원을 입금한다.
위와 같은 두 가지 작업을 할 것입니다. 만약 A 계좌에서 100만원을 인출하고 난 뒤 오류가 발생한다면 A는 100만원이 없어지고 B는 100만원을 못 받는 일이 생길 것입니다. 이런 일을 방지하기 위해 두 가지 작업을 하나로 묶어서 처리하여 하나라도 실패하면 db에 반영하지 않고 모두 성공해야 데이터베이스에 반영해야 합니다. 여기서 하나로 묶은 것이 바로 트랜잭션입니다.
ACID 속성
트랜잭션에는 ACID라는 4가지 속성이 있습니다.
Atomicity (원자성)
트랜잭션이 모두 반영되거나, 모두 반영되지 않아야 한다.
트랜잭션의 내부 sql문들이 전부 성공해야 데이터베이스에 반영이 됩니다. 만약 하나라도 실패한다면 작업을 모두 취소 후 롤백합니다.
Consistenty (일관성)
모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다.
트랜잭션 실행 후에도 데이터베이스에서 정한 무결성 제약 조건을 항상 만족하여 일관성을 유지해야 합니다.
Isolation (독립성)
동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야 한다.
독립성을 엄격하게 구현하면 성능이 나쁘기 때문에 DBMS는 여러 종류의 Isolation level을 제공합니다.
Durability (영속성)
커밋된 트랜잭션의 결과는 데이터베이스에 영구적으로 저장되어야 한다.
여기서 '영구적으로 저장한다' 할 때는 일반적으로 비휘발성 메모리(hdd,ssd)에 저장함을 의미합니다. 기본적으로 트랜잭션의 영속성은 DBMS가 보장합니다.
'DB' 카테고리의 다른 글
스프링에서 레디스 센티넬 (0) | 2024.10.19 |
---|---|
DAO와 DTO (0) | 2024.07.13 |