[DB] 트랜잭션 : 데이터 처리의 기본 작업 단위

2023. 11. 30. 12:20·Computer Science (CS)
반응형

DB Transaction


트랜잭션 특징

  • 데이터베이스의 데이터 무결성이 보장되는 상태에서 DML 작업을 완수하기 위한 기본 작업 단위
  • 트랜잭션을 통해 비정상 종료 및 실패에 대해 데이터 신뢰성과 일관성 보장

 

이론적 일반 상황에서는 "DML 실행과 실행에 대한 커밋/롤백 단계" 까지를 트랜잭션이라고 한다.

필드에서는 "SELECT 문으로 데이터를 조회하고 DML을 실행하여 종료하는 과정"까지 라고 한다.


ACID 란?

개념 내용
원자성(Atomicity) 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다.
일관성(Consistency) 트랜잭션의 실행이 성공적으로 완료되면 DB는 모순 없이 일관성이 보존된 상태여야 한다
고립성(Isolation) 어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼수 없다.
지속성(Durability) 트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야한다.

 

간단한 예시

 

  • 원자성 : 이체 금액이 10만원이면 10만원이 완전히 이체되거나 안되거나 라는 뜻이다. 5만원만 되거나 9만원만 되는 것이 아니다. (Rollback 사용)
  • 일관성 : Alice 계좌에서 10만원이 출금되었으면 Bob 계좌에는 10만원이 입금 되어야한다.
  • 고립성 : Alice 계좌에서 이체가 실행되는 것에 대해서 Bob 사용자는 관여할수 없다. Alice의 이체 실행이 완료되지 않으면 Bob은 이체 관련하여 처리할수 없다.(조회는 가능)
  • 보존성 : 이체가 끝나면 저장되고 보존해야한다 / 장애가 발생했을때 복구 하기 위해서이다.

 

트랜잭션 수행 단계

 

상태 설명
활성화 트랜잭션을 실행 상태
부분완료 DML 등 트랜잭션 명령을 실행한 후 의 상태
완료 트랜잭션 성공적으로 완료
실패 더 이상 정상적으로 실행 불가
철회 이전 트랜잭션을 복원하여 트랜잭션 수행 이전 상태로 돌아감

 

Update의 예시를 들어보자

나의 휴대폰 정보를 iphone13 에서 iphone14로 수정하려고한다.

  • Update 명령어를 실행해서 트랜잭션 시작
  • iphone14로 변경은 되었으나 DB에 영구적으로 반영은 안됨 / 다른 사용자가 조회하면 여전히 iphone13으로 표시
  • 정확하게 갱신되었다면 Commit을 하고 정상적으로 DB에 영구적으로 반영
  • 만약 UPDATE 명령이 실행이 실패 된다면 롤백되어 철회된다.

커밋 이전 과 이후  비교

이전 

  • 데이터 변경 이전의 상태로 복구가 가능하다
  • 현재 사용자만 DML 작업의 결과를 확인할 수 있으며 다른 사용자는 확인할 수 없다.
  • 변경 중인 행은 접근 제어되어 다른 사용자가 변경이 불가하다.

이후

  • 데이터베이스에 데이터를 영구적으로 변경, 적용되어 기존 데이터는 상실한다.
  • 모든 사용자가 결과를 확인 할 수 있다.
  • 접근 제어가 해지되어 다른 사용자가 변경 할수 있다.
반응형

'Computer Science (CS)' 카테고리의 다른 글

JWT(JSON Web Token) 이란?  (0) 2024.01.23
[DB] 동시성 제어(Concurrency Control), 직렬화(Serialization)  (0) 2023.11.30
[DB] Database Project - 4 / SQL Developer 설치 및 Oracle DB 구축  (1) 2023.11.28
[DB] Database Project - 3 오라클 데이터베이스 Entity Relationship Diagram 설계  (0) 2023.11.28
[DB] Database Project - 2 주제 선정  (1) 2023.11.28
'Computer Science (CS)' 카테고리의 다른 글
  • JWT(JSON Web Token) 이란?
  • [DB] 동시성 제어(Concurrency Control), 직렬화(Serialization)
  • [DB] Database Project - 4 / SQL Developer 설치 및 Oracle DB 구축
  • [DB] Database Project - 3 오라클 데이터베이스 Entity Relationship Diagram 설계
BoChan
BoChan
    반응형
  • BoChan
    보람찬 코기의 개발자 블로그
    BoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Kubernetes_쿠버네티스 (8)
      • Docker_도커 (6)
      • Public Cloud (2)
      • 머신러닝 & 딥러닝 & AI 맛보며 친해지기 (10)
      • Develop & Project Review (6)
      • git&github (1)
      • Programming Language (2)
      • Computer Science (CS) (15)
      • 일상&인턴 (10)
      • 논문 리뷰 (0)
  • 블로그 메뉴

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

    • Github
    • Baekjoon Online Judge
  • 공지사항

  • 인기 글

  • 태그

    jetson
    TensorRT
    인턴
    DB project
    ORACLEDB
    한국전자통신연구원
    onnx
    딥러닝
    연구연수생
    컴퓨터공학
    DB
    s3fs-fuse
    FastAPI
    k8s
    도커
    ip
    대전
    Yolov7
    쿠버네티스
    AWS
    머신러닝
    Rag
    PyTorch
    k3s
    Docker
    JetsonNano
    인터넷공학
    Database
    python
    ETRI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BoChan
[DB] 트랜잭션 : 데이터 처리의 기본 작업 단위
상단으로

티스토리툴바