4.3 트랜잭션과 무결성

2025. 1. 21. 23:09·SW개발/면접을 위한 CS 전공지식 노트
반응형

4.3.1 트랜잭션

  • 정의: 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업 단위.
    • 여러 개의 쿼리를 하나로 묶어서 처리.
  • 특징 (ACID):
    • 원자성 (Atomicity):
      "모든 작업이 완료되거나, 아무것도 수행되지 않음을 보장."
    • 일관성 (Consistency):
      데이터는 트랜잭션 전후에 허용된 방식으로만 변경되어야 함.
    • 격리성 (Isolation):
      서로 다른 트랜잭션이 독립적으로 실행되며, 동시에 실행되더라도 서로 영향을 미치지 않음.
    • 지속성 (Durability):
      성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 함.

커밋과 롤백

커밋
  • 커밋 (Commit):
    • 트랜잭션 내의 모든 작업이 성공적으로 완료되었음을 데이터베이스에 알리고 확정.
    • 트랜잭션 성공을 의미.
롤백
  • 롤백 (Rollback):
    • 트랜잭션 내 작업 중 오류가 발생했을 경우, 이전 상태로 되돌림.
    • "태초의 상태"로 복원.

*격리 수준 (Isolation Level)

격리 수준 정의 장점 단점
Serializable 모든 트랜잭션이 순차적으로 실행되는 것처럼 동작. 가장 높은 데이터 무결성 제공. 성능이 가장 낮음.
Repeatable Read 트랜잭션 동안 읽은 데이터가 변경되지 않도록 보장. 동일 데이터 재조회 시 일관성 유지. 팬텀 리드 발생 가능.
Read Committed 커밋된 데이터만 읽음. 트랜잭션 중 변경된 데이터는 보이지 않음. 더티 리드 방지. 반복 불가능한 읽기 발생 가능.
Read Uncommitted 커밋되지 않은 데이터를 읽을 수 있음. 가장 높은 성능 제공. 더티 리드, 반복 불가능한 읽기, 팬텀 리드 발생.

1. 팬텀 리드 (Phantom Read)

  • 정의:
    한 트랜잭션에서 동일한 조건으로 두 번 이상 데이터를 조회했을 때,
    **첫 번째 조회 시에는 없던 새로운 데이터(팬텀 데이터)**가 두 번째 조회 시 나타나는 현상.
  • 발생 조건:
    • 다른 트랜잭션에서 새로운 데이터를 삽입하거나 삭제한 경우.
  • 예시:
    • 트랜잭션 A가 "가격이 1000 이상인 상품"을 조회 중.
    • 트랜잭션 B가 가격이 1000 이상인 새 상품을 추가하면,
      A가 동일한 조건으로 데이터를 다시 조회했을 때 추가된 데이터가 나타남.
  • 해결 방법:
    • Serializable 격리 수준에서만 방지 가능.

2. 반복 가능하지 않은 조회 (Non-Repeatable Read)

  • 정의:
    한 트랜잭션에서 동일한 조건으로 데이터를 두 번 조회했을 때,
    첫 번째 조회 결과와 두 번째 조회 결과가 다르게 나타나는 현상.
  • 발생 조건:
    • 다른 트랜잭션에서 데이터를 수정하거나 삭제한 경우.
  • 예시:
    • 트랜잭션 A가 특정 사용자의 잔액을 조회함 (조회 결과: 5000).
    • 트랜잭션 B가 해당 사용자의 잔액을 7000으로 변경.
    • A가 다시 조회했을 때 잔액이 7000으로 변경됨.
  • 해결 방법:
    • Repeatable Read 격리 수준 이상에서 방지 가능.

3. 더티 리드 (Dirty Read)

  • 정의:
    한 트랜잭션에서 다른 트랜잭션에서 커밋되지 않은 데이터를 읽는 현상.
    • 이후, 읽은 데이터가 롤백되면 데이터 불일치 문제가 발생.
  • 발생 조건:
    • 트랜잭션이 Read Uncommitted 격리 수준일 때 발생.
  • 예시:
    • 트랜잭션 B가 특정 사용자의 잔액을 7000으로 변경 (아직 커밋되지 않음).
    • 트랜잭션 A가 이 데이터를 조회해 7000으로 인식.
    • 이후 B에서 롤백하여 잔액이 원래 값(5000)으로 복원되면, A는 잘못된 데이터를 본 셈이 됨.
  • 해결 방법:
    • Read Committed 격리 수준 이상에서 방지 가능.
격리 수준 팬텀 리드 반복 가능하지 않은 조회 더티 리드
Serializable 방지 방지 방지
Repeatable Read 발생 가능 방지 방지
Read Committed 발생 가능 발생 가능 방지
Read Uncommitted 발생 가능 발생 가능 발생 가능

지속성 (Durability)

  • 정의: 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함.
    • 시스템 장애 발생 시에도 복구 가능.
  • 지속성을 지원하는 기술:
    • 체크섬 (Checksum): 데이터의 무결성을 확인하기 위한 값.
    • 저널링 (Journaling): 트랜잭션 작업 내용을 로그에 기록하여 장애 시 복구 가능.
    • 롤백 (Rollback): 작업 중 문제가 생겼을 때, 데이터의 이전 상태로 복원.

무결성 (Integrity)


종류 정의 설명
개체 무결성 기본키(Primary Key)는 NULL 값이거나 중복될 수 없음. 각 레코드가 유일하게 식별되어야 함.
참조 무결성 외래키(Foreign Key)는 참조되는 테이블의 기본키 값과 일치해야 함. 참조 관계에 있는 데이터 간의 일관성을 유지.
고유 무결성 특정 컬럼은 중복된 값을 가질 수 없음. 고유 제약 조건(UNIQUE).
NULL 무결성 특정 컬럼은 NULL 값을 가질 수 없음. NOT NULL 제약 조건 사용.
반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글

4.5 인덱스  (0) 2025.01.22
4.4 데이터베이스의 종류  (3) 2025.01.22
4.2 ERD와 정규화 과정  (1) 2025.01.21
4.1 데이터베이스의 기본  (0) 2025.01.21
참고. 가상 메모리, 페이징 기법, Segmentation Fault  (0) 2025.01.17
'SW개발/면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
  • 4.5 인덱스
  • 4.4 데이터베이스의 종류
  • 4.2 ERD와 정규화 과정
  • 4.1 데이터베이스의 기본
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • AI (16)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (7)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CS지식
    정리본
    요약본
    ESG
    반도체 소자 공학
    c언어 입출력
    파일입출력 #DataFrame불러오기
    ios7계층
    MySQL
    LAN
    홉바이홉
    전공 지식
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    반도체 공학
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    os구조
    페이징 기법
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    공백포함입력받기
    반도체 물성
    멀티프로세스
    입출력관리
    word 수식
    홉바이홉통신
    면접을 위한 CS 전공지식 노트
    메시지큐
    보고서 수식
    면접을 위한 cs전공지식 노트
    c io
    운영체제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
4.3 트랜잭션과 무결성
상단으로

티스토리툴바