DB

데이터베이스 트랜잭션(Transaction) 이란?

Raconer 2023. 4. 15. 20:02
728x90

트랜잭션이란?

  • 데이터 베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다.
  • 이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. (ACID)
  • 하지만, 실제로는 성능 향상을 위해 이런 특성들이 종종 완화되곤 한다.
  • 트랜잭션 설정을 하지 않으면 SQL문 하나에 트랜잭션이 설정된다.

예)

홍길동 - 900원 -> 김국밥

  1. READ(홍길동 잔액)

    • 이름 잔액
      홍길동 1000
      김천사 500
  2. UPDATE(김국밥 잔액) = 김국밥 잔액 + 900

    • 이름 잔액
      홍길동 1000
      김천사 1400
  3. UPDATE(홍길동 잔액) = 홍길동 잔액 - 900

    • 이름 잔액
      홍길동 100
      김천사 1400

만약 3번이 실패 한다면?

트랜잭션이 없다면 데이터 정합성이 깨졌다고 표현이 된다.
그래서 여러 SQL문을 하나의 오퍼레이션으로 묶을 수 있어야 한다.

만약 2번과 3번이 바껴서 실행되고 이순간 김국밥이 1400원을 출금이 되어 버린다면?

처리중인 데이터를 다른 곳에서 조회하게 되면 문제가 발생되므로 트랜잭션 격리레벨을 설정한다.

ACID

원자성(Atomicity)

  • 특징
    • 트랜잭션은 실행되면 중단 되지 않는다.
    • ALL or Nothing -> 성공 또는 실패 만 있다.
      • MVCC 기능이 지원한다.
  • 동작
    • 트랜잭션 시작 (2번 실행)
    • 원본 데이터는 Under Log에 저장되어 있다.
    • 트랜잭션 실패시 Under Log로 Rollback이 된다.
      • MVCC는 버전 관리 개념이다.
    • 트랜잭션 성공시
      • 변경된 데이터는 Commit이 된다.
      • 원본데이터가 바로 삭제 되지 않는다.

일관성(Consistency)

  • 트랜잭션이 종료 되어 ㅆ을때 데이터 무결성이 보장된다.
    • 제약조건을 통해 보장이된다.
      • ex) 유니크 제약, 외래키 제약

        독립성(Isolation)

  • 다른 트랜잭션이 끼어들지 못한다.
  • DB 성능 관련으로 가장 유연성있는 제약 조건이다.

    지속성(Durability)

  • 성공한 트랜잭션은 영원히 반영 되어야 한다.
728x90

'DB' 카테고리의 다른 글

Redis 란?_명령어_brpop  (0) 2023.04.16
Redis 란?_명령어_기초  (0) 2023.04.16
Redis 란?_Key/value 규칙  (0) 2023.04.16
Redis 란?_기본 정보  (0) 2023.04.16
Connection Pool  (0) 2023.04.15