본문 바로가기

트랜잭션&락 1편 - All Or Nothing / ACID

@xuv22025. 12. 22. 15:12

어떠한 작업을 할 때, 여러 작업들이 하나의 단위로 진행 되어야 하는 경우, 트랜잭션을 사용하면 된다.

예를 들어, 어떤 물건을 구매하고 싶다면 (비용 지불 -> 물건 획득) 이라는 작업이 하나의 프로세스로 이어져야 한다.

돈만 받고 물건을 안주거나, 돈을 주지 않았는데 물건을 주는 불상사는 없어야 한다.

이처럼 여러 작업이 하나로 묶여 모든 작업이 반드시 수행되어야하는 단위를 트랜잭션이라고 한다.

 

이후 트랜잭션의 기본적인 내용(커밋, 롤백 , 실행 등)들은 해당 시리즈에선 다루지 않겠다.


트랜잭션 ACID

트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질은 4가지가 있다.

Atomicity (원자성)

트랜잭션이 모두 반영 되던가 모두 반영되지 않아야 한다는 것을 의미한다.

Consistenct (일관성)

트랜잭션의 작업 처리 결과는 항상 일관성이 있어야한다. 즉, 항상 데이터가 우리가 원하는 정의에 일치해야한다는 것이다.

예를 들어 A업체에서 사람들 주문량이 1000을 넘지 않길 원한다면, 해당 규칙이 지켜지는 것을 일관성이 있다고 말할 수 있다.

이런 일관성은 DB레벨에서 보장하는 것이 아닌 애플리케이션 레벨에서 지켜져야한다.

Isolation(격리성)

둘 이상의 트랜잭션이 동시에 실행되려고 할 때, 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에는 끼어들 수 없다.

즉, 하나의 트랜잭션이 완료될 때까지 다른 트랜잭션들이 특정 트랜잭션의 결과를 참조할 수 없도록 해야한다.

Durability(지속성)

트랜잭션이 성공적으로 완료되었을 때, 결과는 영구적으로 반영이 되어야 한다.

즉, 트랜잭션에서 기록한 모든 데이터는 손실되지 않는다는 보장이다.

 

 

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차