본문 바로가기

Spring

Transaction에 대해서 아시나요?

모르겠습니다.

 

내 대답이었다. 내 첫 면접에서의 질문 중 하나였다.

쓰는 것도 많이 봤지만 정확히 어떤 기능인지 몰랐고 굳이 알려고 하지도 않았었다.

 

공부해야할 것들이 엄청나게 많다. 그리고 이제 결과만 쫓는 형태가 아니라 HOW를 알아야 한다고 생각이 든다.

 

 

 

Transaction

데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미

즉, 병행 제어 시 처리되는 작업의 논리적 단위

 

모든 작업이 성공한다면 완료 작업 상태를 모두 반영하고, 이것을 Commit,

반면, 하나라도 실패하게 된다면 모든 사항을 폐기하고, 이것을 Rollback.

 

 

Transaction의 4가지 성질

ACID

✔️ Atomicity 원자성

: 한 트랜잭션 내의 실행 작업은 하나의 단위로 처리

즉, 모두 성공 또는 모두 실패하는 것을 의미합니다.

 

✔️ Consistency 일관성

: 트랜잭션은 일관성 있는 데이타베이스 상태를 유지

제약조건이나 데이터 규칙에 위반하지 않는 일관성을 의미합니다.

하나의 동작이 정상적인 흐름을 일관적으로 가질 수 있어야 한다는 원칙입니다.

 

✔️ Isolation 독립성

: 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 독립

격리성이라고도 합니다.

하나의 동작 중 다른 트랜잭션의 개입으로 데이터가 변경되어서는 안되겠죠?

따라서, 한 동작이 독립적으로 처리해야한다는 원칙입니다.

 

✔️ Durability 영속성

: 트랜잭션을 성공적으로 마치면 결과가 항상 저장

트랜잭션의 동작이 성공 후 Commit 된다면 영원히 반영되어야 한다는 원칙입니다.

 

 

아주 기본적인 내용이다.

그리고 트랜잭션을 실제로 사용하면서 마주치는 문제들을 통해 더 깊게 이해할 계획이다.

 

 

 

참고 : 

https://gngsn.tistory.com/152