개발로 자기계발
728x90

트랜잭션 이란?

A Collection Of Queries(쿼리 모음)

One Unit Of Work(하나의 작업 단위)
예시) 은행 거래(SELECT, UPDATE, INSERT)

 

트랜잭션 수명(Transaction Lifespan)

구분 설명
Begin 트랜잭션 시작
Execution 트랜잭션 실행
Validation 트랜잭션 검증 / 결정
Commit or Rollback 트랜잭션 커밋(디스크에 입력)
or
트랜잭션 롤백(메모리에 있는것을 되돌리기)
Unexpected Ending 예상치 못한 상황(=Rollback)
ex) Crash, Bug

 

트랜잭션 특성(Nature of Transactions)

데이터베이스 트랜잭션이 안전하고 신뢰할 수 있도록 만드는 규칙 세트

구분 설명
Atomicity(원자성) 트랜잭션의 모든 작업이 완전히 수행되거나, 전혀 수행되지 않는 것
ex) 100개의 성공한 쿼리가 있다고 해도 한 번의 실패로 즉시 롤백
Consistency(일관성) 트랜잭션이 실행되기 전과 후, 데이터베이스는 항상 올바른 상태를 유지
Isolation(고립성) 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 중간 과정을 볼 수 없음
Durability(지속성) 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 데이터베이스에 반영

InnoDB 스토리지 엔진은 이러한 ACID 속성을 충족시키기 위해 설계

1. 원자성을 보장하기 위해 InnoDB는 트랜잭션 로그를 사용
2. 일관성을 유지하기 위해 무결성 제약 조건을 강제
3. 고립성은 격리 수준에 따라 다양한 방식으로 구현
4. 지속성은 트랜잭션이 커밋되면 변경 사항이 디스크에 즉시 기록되어 장애 발생 시에도 데이터가 보존
728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)