본문 바로가기
Boaz/Computer Science

[CS 전공지식 #14] 챕터4-3. 트랜잭션과 무결정

by 남디윤 2025. 2. 24.

 

 

목차

4.3 트랜잭션과 무결정

4.3.1 트랜잭션

4.3.2 무결성

 

챕터4. 데이터베이스

 

4.3 트랜잭션과 무결정

 

4.3.1 트랜잭션

  • 트랜잭션
    • 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위
    • 여러 개의 쿼리들을 하나로 묶는 단위
    • 특징: 원자성, 일관성, 독립성, 지속성 = ACID 특징
  • 원자성 atomicity
    • 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징
    • all or nothing
    • 예) 트랙잭션 커밋 → 문제 발생 → 롤백 → 그 이후에 모두 수행되지 않음을 보장
    • 트랜잭션 단위로 여러 로직들을 묶을 때 외부 API를 호출하는 것이 있으면 X
    • 커밋 commit:
      • 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어
      • 트랜잭션 단위로 수행, 변경된 내용이 모두 영구적으로 저장되는 것
      • 커밋이 수행 되었다 = 하나의 트랜잭션이 성공적으로 수행되었다
      • 아래 예시) update, insert, delete 의 쿼리가 하나의 트랜잭션 단위로 수행
    • 롤백:
      • 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소)
    • 커밋과 롤백 덕에 데이터의 무결성이 보장됨
    • 데이터 변경 전에 변경 사항을 쉽게 확인 가능, 작업 그룹화 가능
    • 트랜잭션 전파: 여러 트랙잭션 관련 메서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것

ImageImage

  • 일관성 consistency
    • ‘허용된 방식’으로만 데이터를 변경해야 하는 것
    • 데이터베이스에 기록된 모든 데이터는 여러 가지 조건, 규칙에 따라 유효함
    • 예) 범석이 0원 가짐 → 필자한테 500만원 입금 → 불가능 (마통아닌 경우)
  • 격리성 isolation
    • 트랜잭션 수행 시 서로 끼어들지 못하는 것
    • 여러 개의 격리 수준으로 나뉘어 격리성을 보장
    • 격리 수준에 따라 발생하는 현상
    • 팬텀 리드 phantom read
      • 트랜잭션 내에서 동일한 쿼리를 보냈을 때 해당 조회 결과가 다른 경우
    • 반복 가능하지 않은 조회 non-repeatable read
      • 한 트랜잭션 내의 같은 행에 두 번 이상 조회 발생, 그 값이 다른 경우
      • 팬텀 리드와 다른 점:
        • 반복 가능하지 않은 조회) 행 값이 달라질 수도 있음
        • 팬텀 리드) 다른 행이 선택될 수도 있음
    • 더티 리드 dirty reaad
      • 반복 가능하지 않은 조회와 유사
      • 한 트랜잭션이 실행 중일 때, 다른 트랜잭션에 의해 수정되었지만 아직 ‘커밋되지 않은’ 행의 데이터를 읽을 수 있을 때 발생
    • 격리 수준
    • SERIALIZABLE
      • 트랜잭션을 순차적으로 진행시키는 것
      • 매우 엄격한 수준
      • 여러 트랜잭션이 동시에 같은 행 접근 불가
      • 해당 행에 대해 격리 → 기다려야함
      • 교착 상태가 일어날 확률이 많고 가장 성능이 떨어지는 격리 수준
    • REPEATABLE_READ
      • 하나의 트랜잭션이 수정한 행을 다른 트랜잭션이 수정할 수 없도록 막아주지만 새로운 행을 추가하는 것은 막지 않음
      • 추가된 행 발견 가능
    • READ_COMMITTED
      • 가장 많이 사용되는 격리 수준 (여러 DBMS에서 기본값 설정)
      • 커밋 완료된 데이터에 대해서만 조회 허용
      • 어떤 트랜잭션이 접근한 행을 다른 트랜잭션이 수정 가능
      • 트랜잭션 A가 수정한 행을 트랜잭션 B가 수정 가능
      • → 트랜잭션 A가 같은 행을 읽을 때 다른 내용 발견 가능
    • READ_UNCOMMITED
      • 가장 낮은 격리 수준, 빠름
      • 하나의 트랜잭션이 커밋되기 이전에 다른 트랜잭션에 노출되는 문제 존재
      • → 데이터 무결성을 위해 되도록 사용하지 않는 것이 이상적

Image

  • 지속성 durability
    • 수행된 트랜잭션은 영원히 반영되어야 하는 것을 의미
    • 데이터베이스에 시스템 장애 발생 시 원래 상태로 복구하는 회복 기능이 있어야 함
    • → 체크섬, 저널링, 롤백 등의 기능 제공

 

4.3.2 무결성

  • 무결성: 데이터의 정확성, 일관성, 유효성을 유지하느 ㄴ것
  • 무결성이 유지되어야 데이터베이스에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰 생김
  • 무결성의 종류: 개체 무결성, 참조 무결성, 고유 무결성, NULL 무결성