본문 바로가기

DB

DB Transaction

 Transaction 이란?

 

트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

 

트랜잭션의 특징

1) 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.
2) 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.
3) 하나의 트랜잭션은 Commit되거나 Rollback된다.

 

 


 

Transaction의 성질

 

트랜잭션은 ACID 원칙이라고 하는 성질을 가져야 한다.

  • Atomicity(원자성)
    - 트랜잭션은 전부 수행되거나 전혀 수행되지 않아야 한다.

  • Consistency(일관성)
    - 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 한다.
    - 즉 DB의 상태, DB 내의 계층 관계, 컬럼의 속성 등이 항상 일관되게 유지되어야 한다.

  • Isolation(독립성,격리성)
    - 각 트랜잭션은 다른 트랜잭션으로부터 독립적으로 수행되어야 한다.

  • Durablility(영속성,지속성)
    - 트랜잭션이 완료되면 그 결과는 영구적으로 저장되어야 한다.
    - 즉 트랜잭션이 커밋되면 시스템이 충돌하거나 재부팅되더라도 트랜잭션의 결과가 유지되어야 한다.


 

Transaction의 연산

 

  • Commit 연산
    - 트랜잭션 내의 모든 변경 사항을 영구적으로 데이터베이스에 반영하는 연산

  • Rollback 연산
    - 트랜잭션 내의 모든 변경 사항을 취소하고 트랜잭션 시작 이전의 상태로 되돌리는 연산

 


 

Redo Log와 Undo Log

 

MySQL을 비롯한 여러 DB에서는 트랜잭션의 안정성과 무결성을 보장하기 위해 Redo Log, Undo Log를 사용한다.

 


 

Transaction의 상태

 

  • 활동(Active) : 트랜잭션이 실행 중인 상태
  • 실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
  • 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
  • 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태
  • 완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태

출처 : 
https://coding-factory.tistory.com/226
https://velog.io/@yu-jin-song/DB-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction
https://www.youtube.com/watch?v=vQFGBZemJLQ

 

'DB' 카테고리의 다른 글

정규화(Normalization)  (2) 2024.10.07
DB Lock  (0) 2024.07.10
Transaction의 Isolation Level  (0) 2024.07.08
DB INDEX  (1) 2023.09.17