본문 바로가기
CS/데이터베이스

데이터 정합성 보장을 위한 트랜잭션 이해하기 - 02. 트랜잭션 A, C, I, D

by 컴쏘 2023. 6. 7.
728x90

트랜잭션 ACID

  • ACID의 사전적 정의보다는 ACID가 어떤 이유에서 나왔고 어떤 기술들이 ACID를 가능하게 하는지가 중요

사전적 정의 : 데이터베이스 트랜잭션(데이터에 대한 하나의 논리적 실행단계)이 안전하게 수행된다는 것을 보장하기 위한 성질을 가지키는 약어

  • Atomicity(원자성) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
    • 원자적 연산을 보장해야 함 → All or Nothing (중간에 연산이 수행하다가 멈추지 않음)
    • 어떻게 보장? MVCC를 통해

트랜잭션이 실패했을 때

UPDATE가 일어나면 기존의 데이터에 900원을 더해주고 UPDATE 전의 데이터는 사라지는 것이 아닌 Undo Log에 저장

  • 만약 트랜잭션이 실패하게 되면 Undo Log에 있는 데이터로 복원
  • Undo Log를 통해 MySQL에서는 Atomic함을 보장

트랜잭션 커밋

트랜잭션이 성공적으로 커밋이 되면, UPDATE된 데이터가 원본데이터가 된다. → 커밋이 성공했다고 해서 Undo Log를 바로 삭제해버리지는 않음 

 

MVCC 혹은 Undo Log를 통해서 트랜잭션이 Atomicity한 단위가 된다. (트랜잭션이 Atomic한 가장 최소의 단위가 됨)

 

  • Consistency(일관성) : 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
    • 트랜잭션이 종료되었을 때 데이터 무결성이 보장되는 것
    • 제약조건을 통해 Consistency를 보장 ex) 유니크 제약, 외래키 제약 등
  • Isolation(독립성) : 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미 하고 성능 관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건
    • 트랜잭션은 서로 간섭하지 않고 독립적으로 동작함
    • 하지만 많은 성능을 포기해야하므로 개발자가 제어 가능 → 트랜잭션 격리 레벨을 통해(MVCC)
    • isolation은 지원하는 데이터베이스마다 조금씩 다르다.
  • Durability(지속성) : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미
    • 완료된 트랜잭션은 유실되지 않는다. → WAL을 통해 보장
    • WAL(Write Ahead Log) : 데이터베이스 성능의 핵심은 랜덤한 Disk I/O를 최소화 하는 것이다. 변경이 일어날때마다 디스크에 반영을 하는 것이 아닌, 따라서 메모리에 먼저쓰고 **WAL 기법(순차적으로 로그를 쌓기만 하는 것)**을 통해 디스크에 반영

2023 KAKAO Tech Campus_BackEnd 필수 과정
DB(MySQL) 강의 정리 내용입니다.
728x90