트랜잭션 - 트랜잭션, 연산, ACID

dragonappear·2023년 6월 14일

Database 101

목록 보기
1/10

출처: https://henriquesd.medium.com/acid-properties-43e146b21e0d


트랜잭션

트랜잭션

  • 단일한 논리적인 작업단위
  • 논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만든 것이 트랜잭션
  • 트랜잭션의 SQL문들 중 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다.


트랜잭션 연산

Commit

  • 트랜잭션이 시작되고 지금까지 작업한 내용물을 DB에 영구적으로 저장하는 트랜잭션 종료 명령어

Rollback

  • 트랜잭션이 시작되고 지금까지 작업한 내용을 모두 취소하고 트랜잭션 시작 이전 상태로 되돌리는 트랜잭션 종료 명령어

ACID

트랜잭션을 적용할때 데이터의 무결성을 보장하기 위해 지켜야 하는 원칙

Atomicity(원자성)

  • Transaction은 논리적으로 쪼갤 수 없는 작업 단위이기 때문에 내부의 SQL문들이 모두 성공해야 성공하게 한다.
  • 중간에 SQL문이 실패하면 Rollback 한다.

Consistency(일관성)

  • Transaction은 DB 상태를 Consistent 상태에서 또 다른 Consistent 상태로 바꿔야 한다.
    • Constraints 등을 통해 DB에 정의된 Rule을 위반했다면 Rollback 해야한다.
    • Transaction이 DB에 정의된 Rule을 위반했는지 DBMS가 Commit 전에 확인하고 알려준다.
    • 그 외 Transaction 관점에서 Consistent 하게 동작하는지는 개발자가 챙겨야 한다.

Isolation(고립성)

  • 여러 Transaction들이 동시에 실행될때에도 혼자 실행된것처럼 동작하게 만들어야 한다.

Durability(지속성)

  • Commit 된 Transaction은 DB에 영구적으로 보관되어야 한다.
    • DB 시스템에 문제(Power Fail or DB Crash)가 생겨도 Commit 된 트랜잭션은 DB에 남아있어야 한다.

'영구적으로 저장한다' 는 일반적으로 비휘발성 메모리에 저장함을 의미한다.

  • 기본적으로 Transaction의 Durability는 DBMS가 보장한다.

0개의 댓글