본문 바로가기

CS/데이터베이스

트랜잭션의 정의와 특징

1. 트랜잭션이란?

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

 

2. 트랜잭션의 특징

ACID

  • 원자성(Atomicity)
    • 트랜잭션의 연산은 DB에 모두 반영 or 전혀 반영되지 않아야 한다.
    • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 한다. 그렇지 않을 경우 트랜잭션 전부가 취소되어야 한다.
  • 일관성(Consistency)
    • 트랜잭션이 연산을 완료하면 일관성 있는 DB 상태로 변환한다.
    • 시스템이 갖고 있는 고정요소는 트랜잭션 수행 전/후가 같아야 한다.
  • 독립성, 격리성(Isolation)
    • 하나의 트랜잭션이 실행중일 경우 다른 트랜잭션 연산이 끼어들 수 없다.
    • 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
  • 영속성, 지속성(Durability)
    • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

3. 트랜잭션 연산

  • Commit
    • 트랜잭션의 작업이 성공적으로 완료되었음을 알려주는 연산
  • Rollback
    • 트랜잭션의 오류가 생겨 DB의 일관성을 깨뜨렸을 때, 일부가 정상적으로 수행되었더라도 원자성을 구현하기 위해 트랜잭션의 모든 연산을 undo 하는 연산

4. 트랜잭션 상태

Active: 트랜잭션이 실행중인 상태

Failed: 트랜잭션 실행에 오류가 발생하여 중단된 상태

Aborted: 트랜잭션이 비정상적으로 종료되어 rollback 연산을 수행한 상태

Partially Committed: 트랜잭션의 마지막까지 수행되었고, Commit을 수행하기 직전의 상태

Committed: 트랜잭션이 성공적으로 종료되어 commit 연산을 실행한 후의 상태

'CS > 데이터베이스' 카테고리의 다른 글

트랜잭션의 격리수준  (0) 2021.09.28
Injection  (0) 2021.09.28
수직적 확장과 수평적 분할  (0) 2021.09.28
인덱스란?  (0) 2021.07.20
Key  (0) 2021.06.23