상세 컨텐츠

본문 제목

Database Transaction

RDBMS

by Wanderer Kim 2022. 4. 26. 23:24

본문

728x90

트랜잭션이란?

트랜잭션은 데이터베이스 상태를 변환시키는 논리적 수행 단위이다.

 

트랜잭션이 필요한 이유

회원의 등급을 업그레이드하는 작업을 진행한다고 생각해보자. 여러 명의 회원 등급을 업그레이드하는 도중에 시스템상의 문제로 작업이 정상적으로 마무리되지 못했다. 

이때 트랜잭션이 없으면 어떤 회원의 등급은 업그레이드 되고 어느 회원은 업그레이드 되지 못하는 문제가 발생하게 된다. 이런 문제를 방지하기 위해 회원 등급을 업그레이드 하는 작업을 한 트랜잭션으로 묶으면 작업을 성공적으로 마친후에야 실제 데이터베이스에 반영이 된다.

 

트랜잭션의 성질

트랜잭션의 성질을 흔히 ACID로 표현한다. 

  • Atomicity(원자성)
    • 하나의 트랜잭션이 더 작게 나눌 수 없는 최소의 단위라는 뜻이다. 트랜잭션이 모두 반영되거나, 아니면 전혀 반영되지 않아야 하는 특징을 나타낸다.
  • Consistency(일관성)
    • 일관성은 트랜잭션이 완료된 결과값이  일관적인 데이터베이스 상태를 유지하는 것을 말한다. 쉽게 말하면, 새로운 데이터가 등록되면 그 데이를 참조하는 모든 데이터들은 같은 데이터를 가져와야 한다. 또는 0이상이어야 하는 무결성 제약이 있다면 이를 위반하는 트랜잭션은 모두 중단되어야 한다.
  • Isolation(독립성)
    • 한 트랜잭션이 수행중일 때, 다른 트랜잭션의 작업이 중간에 끼어들어 기존 작업에 영향을 주지 않아야 한다는 성질을 말한다.
  • Durability(지속성)
    • 트랜잭션을 성공한 후 데이터베이스에 반영된 것은 영원히 반영되어야 한다는 것을 의미한다.

롤백과 커밋

  • 롤백 : 하나의 트랜잭션 처리가 비정상적으로 종료되면 트랜잭션의 원자성을 위해 해당 트랜잭션에서 작업한 모든 연산을 취소하여 실제 데이터베이스에 반영하지 않는다.
  • 커밋 : 하나의 트랜잭션 작업이 정상적으로 끝마쳤을 때 실제 데이터베이스에 반영된다.

트랜잭션의 상태

  • Active(활동 상태) : 트랜잭션이 수행을 ㅅ히작하여 현재 수행 중인 상태
  • Partially Committed(부분 완료 상태) : 마지막 연산이 실행된 직후의 상태. 연산은 모두 처리했지만, 데이터베이스에 반영되지 않는다.
  • Commited(완료 상태) : 트랜잭션이 성공적으로 완료되어 커밋을 한 상태
  • Failed(실패 상태) : 장애가 발생하여 트랜잭션이 중단된 상태
  • Aborted(철회 상태) : 수행에 실패하여 롤백 연산을 실행한 상태
반응형

'RDBMS' 카테고리의 다른 글

[SQLD] RANK 함수  (0) 2023.04.28
[SQLD] 슈퍼/서브 타입 데이터 모델의 변환 기술  (0) 2023.03.08
[SQLD] 엔터티  (0) 2023.03.07
[SQLD] 문자유형비교방법  (0) 2023.02.25
[SQLD] 트랜잭션  (0) 2023.02.25

관련글 더보기

댓글 영역