본문 바로가기
Database

트랜잭션(Transaction)

by 2nyong 2023. 3. 22.

트랜잭션(Transaction)

트랜잭션의 필요성

트랜잭션은 은행 ATM이나 데이터베이스 등의 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 즉, 데이터베이스가 사용자의 요구에 응답하기 위한 상태 변환 과정의 작업 단위이다.

 

데이터베이스의 상태 변환 과정에는 SELECT, UPDATE, INSERT, DELETE (CRUD; Create, Read, Update, Delete) 등이 있다.

 

트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 접근하는 등의 상황에 따라 여러개가 생성될 수 있다. 그리고 생성된 트랜잭션은 데이터베이스의 설정에 따라 하나, 혹은 전체가 Commit(저장)되거나 Rollback(철회)될 수 있다. 그 이유는 이렇다.

 

어떤 인터넷 강의는 강의별로 수강을 완료하면 약간의 포인트를 지급하고, 그 포인트를 활용해 다른 강의를 들을 수 있다.총 4명의 학생이 A라는 강의를 수강 완료하여 각각 300 point씩 얻었고, 강의 제공자는 이 내용을 DB에 저장하려고 한다. 이 때 3명의 학생이 얻은 point는 저장이 완료되었고 1명은 저장에 실패하였다. 이럴 경우 저장 프로세스를 다시 시작해야 하는데, 저장이 완료된 학생은 다시 저장이 시작되므로 총 600 point가 저장된다. 이런 오류를 방지하기 위해 트랜잭션은 Commit(저장)Rollback(철회)을 이용한다.

 


트랜잭션의 조건

데이터베이스에서 트랜잭션이 안전하게 수행되기 위해서는 ACID 조건을 충족해야 한다.

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

 

- 원자성

  • 원자성은 하나의 트랜잭션이 더 이상 작게 쪼갤 수 없는 최소한의 업무 단위이다.
  • 트랜잭션이 데이터베이스에 모두 반영되거나, 전혀 반영되지 않아야 하며 작업이 부분적으로 실행/중단되지 않는 것을 보장한다.
  • All or Nothing의 개념으로 작업의 일부만 실행하지 않는다는 것을 의미한다.

 

- 일관성

  • 일관성은 트랙잭션 수행 결과가 항상 일관적인 DB 상태를 유지해야 한다는 것을 의미한다.

 

- 고립성

  • 하나의 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못한다는 것을 의미힌다.
  • 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조할 수 없다.
  • 여러 트랜잭션이 동시에 수행되더라도 각각의 트랜잭션은 독립적으로 수행되어야 한다.

 

- 지속성

  • 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 한다는 것을 의미한다.
  • 일반적으로 Commit(저장)이 된다면 지속성을 만족할 수 있다.

 


트랜잭션의 Commit과 Rollback

- Commit

저장(commit)

Commit은 하나의 트랜잭션을 성공적으로 마치고, 처리과정을 영구적으로 저장하여 데이터베이스가 일관성있는 상태에 있다는 것을 의미한다.

 

- Rollback

철회(Rollback)

Rollback은 트랜잭션의 원자성을 구현하는 것이 불가능할 때, 즉 하나의 트랜잭션 과정이 비정상적으로 종료된 상태를 의미한다. Rollback 이후에는 트랜잭션을 다시 실행하거나 일부 변경된 결과를 취소할 수 있다.

 


트랜잭션의 상태

트랜잭션의 상태

  1. 활동(Active)
    트랜잭션이 실행 중인 상태

  2. 실패(Failed)
    트랜잭션 실행에 오류가 발생하여 중단한 상태

  3. 철회(Aborted)
    트랜잭션이 비정상적으로 종료되어 롤백 연산을 수행한 상태

  4. 부분 완료(Partially Committed)
    트랜잭션의 마지막 연산까지 실행하고, 커밋 연산이 실행 되기 직전의 상태

  5. 완료(Committed)
    트랜잭션이 성공적으로 종료되어 커밋 연산을 실행한 후의 상태

 


Reference

 

트랜잭션 - 해시넷

트랜잭션(transaction)이란 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 거래내역이라고도 한다. '트렌젝션'이 아니라 '트랜잭션'이 올바른 표기법이다. 영어로 간략히 Tx라고 표기하기도 한다.

wiki.hash.kr

 

댓글