본문 바로가기

데이터베이스

[DB] 트랜잭션(Transaction) 이란?

0. Transaction이란?

트랜잭션(Transaction)이란 데이터베이스의 상태 변화를 위해 수행하는 작업의 단위를 의미합니다.

 

먼저 데이터 베이스의 상태 변화가 무엇을 의미하는지 살펴보겠습니다.

 

간단히 아래 SQL(질의어)를 이용해 데이터베이스에 접근하는 것을 의미합니다.

 

  • SELECT
  • INSERT
  • DELETE
  • UPDATE

작업의 단위는 많은 질의어 명령문들로 구성됩니다. 예를들어, 게시판에 글을 쓰고 -> 올리고 -> 새로고침을 하다 했을 때 게시판에는 방금 쓴 게시글을 포함해 업데이트된 게시판을 보게 됩니다. 데이터베이스에서는 사용자가 글을 '올리기' 했을 때 INSERT 문으로 게시글 데이터를 DB로 옮기고, SELECT 문으로 최신 정보를 가져와 게시판을 구성합니다. 여기서 작업 단위는 INSERT, SELECT 문을 합친 것이 됩니다. 즉, 트랜잭션이란 작업 단위를 의미합니다. 

 

 

1. 트랜잭션 특징

  • 원자성 (Atomicity)
  • 일관성 (Consistency)
  • 독립성 (Isolation)
  • 지속성 (Durability)

원자성은 데이터의 처리가 트랜잭션 단위로 이루어져야 함을 의미합니다. 트랜잭션은 데이터베이스에 완전히 반영되거나 전혀 반영되지 않거나 해야 합니다. 

 

일관성은 트랜잭션 작업 처리 결과가 항상 일관적이어야 합니다. 작업 도중 데이터베이스에 값이 변경이 되더라도 처음 트랜잭션을 진행하기위해 참조한 데이터베이스를 갖고 진행해야 합니다.

 

독립성은 둘 이상의 트랜잭션이 동시 실행된 경우 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없어야 합니다. 이는 원자성, 일관성과 연관되어 있습니다.

 

지속성은 트랜잭션이 성공적으로 완려되었을 때 결과가 영구적 반영되어야 함을 의미합니다. 

 

 

 

3. 트랜잭션의 연산

  • Commit
  • Rollback

Commit, 커밋은 하나의 트랜잭션이 끝나고 데이터베이스가 일관성을 보장받아 성공적으로 마쳤음을 알려주기위해 사용하는 연산입니다. Commit 연산은 수행한 트랜잭션을 로그에 저장하여 후에 Rollback 연산을 수행할 시 참조할 수 있습니다.

 

Rollback, 롤백이란 하나의 트랜잭션 처리가 원자성이 깨지는 등, 비정상적으로 종료된 경우 처음부터 트랜잭션을 다시 시작하거나 부분적으로 연산된 결과를 취소시킵니다. 

 

후에 사용자는 트랜잭션 처리된 단위를 바탕으로 Rollback을 진행할 수도 있습니다.