포시코딩

트랜잭션(Transaction)의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 본문

TIL

트랜잭션(Transaction)의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)

포시 2023. 4. 6. 19:46
728x90

트랜잭션(Transaction)

트랜잭션은 여러 개의 쿼리문이 하나의 논리적인 작업으로 묶여서 수행되는 것을 말한다.

 

트랜잭션의 속성으로는 아래 4자리가 있다.

 

원자성(Atomicity)

트랜잭션의 작업이 부분적으로 실행되다가 멈추지 않고,

전체 작업이 완료되거나 아예 수행되지 않거나 둘 중 하나여야 함을 의미.

즉, 트랜잭션의 작업이 모두 성공적으로 완료되어야만 트랜잭션이 완료되었다고 볼 수 있다.

 

일관성(Consistency)

트랜잭션이 수행된 후에도 데이터베이스의 일관성이 유지되어야 함을 의미한다.

즉, 트랜잭션이 완료된 후에도 데이터베이스는 모순 없는 상태여야 한다는데

쉽게 설명하자면 외래키 제약 조건이 걸려있는 데이터가 삭제되면 참조중인 모든 데이터가 함께 삭제되어야 한다.

그러나 삭제되지 않는다면 일관성이 깨진다고 말할 수 있으며 모순이 생기게 된다.

 

고립성(Isolation)

하나의 트랜잭션이 실행될 때 다른 트랜잭션이 접근하지 못하도록 보장하는걸 의미한다.

각각의 트랜잭션이 실행될 때 서로의 트랜잭션에 영향을 미치지 않도록 해 일관성을 유지할 수 있다.

 

지속성(Durability)

트랜잭션이 성공적으로 완료되면, 그 결과가 항상 유지되어야 함을 의미한다.

시스템 장애가 발생하거나 시스템이 다운될 경우에도 데이터가 유실되지 않아야 한다.

다시말해 트랜잭션이 커밋되면 데이터베이스가 다시 시작하더라도 그 결과가 손실되지 않아야 함을 의미

728x90

'TIL' 카테고리의 다른 글

4월12일 - 함수의 범위 - 작성중  (0) 2023.04.12
4월8일 - 재귀 vs 반복문  (0) 2023.04.08
4월6일 - Nest.js의 Request lifecycle  (0) 2023.04.06
4월5일 - RabbitMQ, Kafka  (0) 2023.04.05
4월4일 - 메시지 큐와 브로커  (0) 2023.04.05