본문 바로가기

Computer Science

[Database] 트랜잭션의 개념과 ACID 원칙

트랜잭션(Transaction)의 개념
  • 데이터베이스의 논리적인 작업 단위
  • 여러 개의 SQL 문들을 하나의 논리적 작업으로 묶어서 실행하며, 이 작업이 모두 성공적으로 수행된 경우에만 변경된 데이터를 영구적으로 저장하고, 그렇지 않은 경우에는 모든 변경을 취소
  • 데이터베이스의 일관성과 무결성을 유지하기 위한 중요한 개념 중 하나
  • 트랜잭션을 관리하기 위해서는 ACID 원칙이라는 4가지 특징이 매우 중요

트랜잭션의 특징 4가지 - ACID 원칙
원자성 (Atomicity)
  • All or Nothing
  • 트랜잭션 내에서 수행한 작업들이 모두 성공하거나 모두 실패하는 원칙
  • 트랜잭션 내의 모든 작업은 하나의 단위로 처리되기 때문에 중간에 오류가 발생할 경우 모든 작업이 취소 됨
    Ex) 은행 계좌에서 100원을 인출하고 다른 계좌에 100원을 송금할 경우 두 작업 중 하나라도 실패하게 되면 두 작업 모두 롤백되어 전혀 변화가 없던 것처럼 처리

 

일관성 (Consistency)
  • 트랜잭션 시작 전과 끝난 후의 데이터는 모두 데이터베이스의 무결성 제약을 만족
  • 트랜잭션이 데이터베이스 내에 정의된 규칙을 위반하는 작업을 시도하면 DBMS는 해당 작업을 실패시키고 롤백하여 데이터베이스의 일관성을 유지
    Ex) 행 계좌의 잔액이 항상 0 이상이여야 한다는 제약이 있을 때, 트랜잭션 처리 후에도 이 제약을 어기지 않도록 보장 

 

독립성 (Isolation)
  • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 하나의 트랜잭션이 다른 트랜잭션의 연산에 영향을 미치지 않도록 보장
  • 즉, 동시에 실행되는 트랜잭션들은 서로에게 영향을 주지 않고 독립적으로 실행되는 원칙
  • 트랜잭션 간에 중간 결과를 다른 트랜잭션이 볼 수 없게 하며, 격리 수준에 따라 다르게 설정 가능
    • Read Uncommitted : 다른 트랜잭션의 미완료 결과를 볼 수 있음
    • Read Committed : 다른 트랜잭션의 커밋된 결과만 볼 수 있음
    • Repeatable Read : 트랜잭션 시작 이후에는 같은 값을 반복적으로 읽을 수 있음
    • Serializable : 트랜잭션들이 직렬화된 것처럼 처리

 

영구성 (Durability)
  • 트랜잭션이 성공적으로 완료되었을 경우 결과는 영구적으로 저장되어 시스템에 장애가 발생하더라도 이미 커밋된 트랜잭션은 반영된 상태로 유지
  • 트랜잭션이 HDD, SSD 등의 비휘발성 저장장치에 영구적으로 저장되는 것을 의미
  • 데이터베이스 시스템은 COMMIT 후에 데이터의 변경 사항을 실제로 저장하고 이를 로그 파일 등으로 기록하여 복구를 지원
    Ex) 트랜잭션 완료 후 서버가 종료되거나 장애가 발생해도 데이터는 손실되지 않고 복구

트랜잭션 처리 흐름

 

  1. 트랜잭션이 시작되면 데이터베이스는 작업을 기록하고 변경된 데이터를 임시 저장소에 보관
  2. 트랜잭션이 끝나면 commit 명령어를 통해 변경사항이 데이터베이스에 영구적으로 반영
  3. 만약 오류가 발생하면 rollback 명령어를 통해 변경된 데이터가 취소되고 트랜잭션 이전 상태로 되돌아 감