[DB] Transaction

양정훈·2022년 6월 21일
  • DB에 수행되는 작업의 단위

쿼리 수행 순서

  1. row lock (MySQL InnoDB의 경우)
  2. UNDO SEGMENT Buffer에 현재 데이터를 기록
  3. UPDATE
  4. 다른 트랜잭션에서 조회하는 경우 UNDO Buffer의 데이터를 조회
  • 아직 커밋 전이므로 이전 상태의 데이터를 응답해준다
  1. Commit, row unlock

특징

Atomicity (원자성)

  • 같은 트랜잭션 내의 작업들은 하나로 간주해, 모두 성공하거나 모두 실패해야함

Consistency (일관성)

  • 트랜잭션의 처리 결과는 항상 일관되어야 함
  • 트랜잭션 도중에 DB의 상태가 바뀌어도, 바뀌기 전 DB를 기준으로 진행되어야함

Isolation (독립성)

  • 서로 다른 트랜잭션끼리 간섭되어선 안됨. 연산에 끼어들거나, 참조할 수 없음

Durability (지속성)

  • 트랜잭션이 성공 완료되면, 결과가 반영되어야 함

Commit, Rollback

Commit

  • 하나의 트랜잭션이 성공적으로 완료되어 DB가 다시 일관성 있는 상태가 됨. 트랜잭션 관리자가 수행한 작업들을 반영하도록 하는 연산

Rollback

  • 하나의 트랜잭션이 비정상 종료되어 행한 모든 연산을 취소하는 연산

상태

Active

  • 트랜잭션이 실행중인 상태

Failed

  • 실행중 오류가 발생해 중단된 상태

Aborted

  • 비정상 종료되어 Rollback 연산을 수행한 상태

Partially Committed

  • 트랜잭션의 모든 연산이 실행되었고, Commit 연산이 수행되기 직전 상태

Committed

  • 성공적으로 완료되어, Commit 연산을 수행한 상태

0개의 댓글