soowanlog

트랜잭션 본문

백엔드

트랜잭션

개발자솬
백엔드

트랜잭션

개발자솬 2024. 3. 5. 15:03
728x90
반응형
  • 트랜잭션이란?

트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위입니다.

데이터베이스의 상태를 변화시킨 다는 것은 CRUD를 이용해 데이터베이스에 접근한다는 것을 의미합니다.

이때 작업의 단위는 CRUD 한 문장이 아니라는 점을 주의해야 합니다.

 

예를 들어, 한 사용자가 게시판에 글을 올린다면 Insert문이 실행되고 게시판을 최신 정보로 유지하기 위해 Select문이 이어서 실행될 것입니다. 여기서 작업의 단위는 Insert문과 Select문을 합친 것입니다.

 

이러한 작업단위를 하나의 트랜잭션이라 합니다.

 

  • 트랜잭션의 특징

ACID라는 약어로 표현되며, 각각의 특징은 다음과 같이 정의됩니다.

- 원자성(Atomicity) :

모든 데이터 변경 작업은 하나의 단일 작업으로 수행되는 것처럼 수행됩니다.

즉, 모든 변경이 수행되거나 모두 수행되지 않습니다.

 

- 일관성(Consistency) :

데이터는 시작 상태부터 끝 상태까지 일관된 상태를 유지하여 데이터 무결성을 강화합니다.

트랜잭션이 진행되는 동안 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 진행되는 것이 아니라 처음 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됩니다.

 

- 독립성(Isolation) :

트랜잭션의 중간 상태는 다른 트랜잭션에서 보이지 않으며, 결과적으로 동시에 실행되는 트랜잭션은 순차적으로 실행되는 것처럼 보입니다.

하나의 특정 트랜잭션이 완료될 때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없습니다.

 

- 지속성(Durability) :

트랜잭션이 성공적으로 완료된 후, 데이터의 변경 사항은 지속되며 시스템 장애가 발생하더라도 변경 사항이 취소되지 않습니다.

 

이러한 속성들은 신뢰성 있는 트랜잭션 처리를 가능하게 합니다.

 

  • 트랜잭션의 Commit, Rollback

- Commit :

하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성 있는 상태에 있을 때 하나의 트랜잭션이 끝났다는 것을 알려주기 위한 연산입니다.

이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는 것을 도와줍니다.

 

- Rollback :

하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 처음부터 다시 시작하거나 트랜잭션의 부분적으로만 연산된 결과를 취소시키기 위한 연산입니다.

후에 사용자가 트랜잭션 처리된 단위대로 Rollback 연산을 수행할 수도 있습니다.

참    고    자    료

- 트랜잭션(Transaction)이란? | 개발자로 홀로 서기

 

- ACID | 위키백과

728x90
반응형

'백엔드' 카테고리의 다른 글

Framework vs Library  (0) 2024.03.09
관계형 데이터베이스  (0) 2024.03.05