본문 바로가기
스터디/SQL

[정리노트] SQLD 2024년 개정판 - 트랜잭션의 이해

by 견습생L 2024. 8. 14.

[정리노트] SQLD 2024년 개정판 - 트랜잭션의 이해

트랜잭션의 개념

  • 하나의 연속적인 업무 단위
  • 트랜잭션의 읫한 관계는 필수적인 관계 형태를 가짐
  • 하나의 트랜잭션에는 여러 SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음
  • ex) 계좌 이체를 예로
    A 고객이 B고객에게 100만원을 이체하려고 한다.
    1. A 고객의 잔액이 100만원 이상인지 확인
    2. 이상이면, A고객 잔액을 -100 UPDATE
    3. B 고객 잔액에 +100 UPDATE
  • 이때 2번과 3번 과정이 동시에 수행되어야 한다. 즉 모두 성공하거나 모두 취소돼야 함 (All or Nothing)
    • 이런 특성을 갖는 연속적인 업무 단위를 트랜잭션이라고 한다.

트랜잭션의 특징

  • 원자성(Atomicity): All or Nothing, 완전히 완료되지 않았을 경우 수행되기 전과 같아야 함
  • 일관성(Consistency): 실행이 성공적으로 완료되면 데이터베이스는 모순없이 일관성이 보존된 상태
  • 고립성(isolation): 트랜잭션의 부분적 실행결과를 다른 트랜잭션이 접근할 수 없음
  • 지속성(Durability): 완료된 트랜잭션의 결과는 영구적으로 데이터베이스에 저장

 

 


주의 내용

  1. A 고객 잔액 차감과 B 고객 잔액 가산이 서로 독립적으로 발생하면 안됨
    •   각각의 INSERT 문으로 개발되면 안됨
  2. 부분 COMMIT 불가
    •   동시 COMMIT 또는 ROLLBACK 처리

필수적, 선택적 관계와 ERD 작성

  •   두 엔터티의 관계가 서로 필수적일 때 하나의 트랜잭션을 형성
  •   두 엔터티가 서로 독립적 수행이 가능하다면 선택적 관계로 표현

 

IE표기법

  •   원을 사용하여 필수적 관계와 선택적 관계를 구분
  •   필수적 관계에는 원을 그리지 않는다
  •   선택적 관계에는 관계선 끝에 원을 그린다

 

바커 표기법

  •   실선과 점섬으로 구분
  •   필수적 관계는 관계선을 실선으로 표기
  •   선택적 관계는 관계선을 점선으로 표기


트랜잭션의 상태 다이어그램

  •   실행(Active): 트랜잭션 실행 시작 혹은 실행 중인 상태 (START TRANSACTION)
  •   부분완료(Partially Committed): 트랜잭션의 마지막 명령을 실행한 후의 상태
  •   실패(Failed): 트랜잭션을 더 이상 정상적으로 실행할 수 없음을 발견한 상태
  •   철회(Aborted): 트랜잭션이 실패하여 취소되어 시작 전 상태로 환원된 상태 (ROLLBACK: 수행한 작업을 취소하고 수행 전 상태로 복귀)
  •   완료(Committed): 트랜잭션이 성공적으로 완료된 상태 (COMMIT: 수행한 작업은 데이터베이스에 반영)
    ※ SAVEPOINT: 롤백 기준점 설정

  •   트랜잭션 관련 명령어 예시
BEGIN TRANSACTION;--트랜잭션 시작
SAVEPOINT savepoint1;--세이브포인트 설정
UPDATE employees SET last_name = ‘Smith’ WHERE employee_id = 207;
--직원의 성을 업데이트
ROLBACK TO savepoint1;--세이브포인트로 롤백
COMMIT;--변경 사항을 데이터베이스에 영구적으로 저장

 

반응형